首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CXF服务客户端:“无法创建安全XMLInputFactory”

CXF服务客户端:“无法创建安全XMLInputFactory”
EN

Stack Overflow用户
提问于 2013-11-21 15:30:15
回答 14查看 54.5K关注 0票数 28

我使用here指令编写了一个CXF服务,并将其部署到Tomcat服务器中。web服务部署得很好,因为我可以在web浏览器中看到WSDL文件。

不过,我的独立Java客户端程序不能正常工作。代码如下:

代码语言:javascript
复制
System.out.println("Creating client");
Properties properties = System.getProperties();
properties.put("org.apache.cxf.stax.allowInsecureParser", "1");
System.setProperties(properties);
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ExampleWebService.class);
factory.setAddress("http://X.X.X.X:9090/WebServices/ExampleWebService");
ExampleWebService exampleWebService = (ExampleWebService)factory.create();
System.out.println("Done creating client");
exampleWebService.method1("test");
System.out.println("After calling method1");

我将CXF 2.7.7发行版中的所有jar文件(包括woodstox-core-asl-4.2.0.jar文件)复制到客户机程序的类路径中,当我运行客户机时,我得到以下异常:

代码语言:javascript
复制
Creating client
Nov 20, 2013 8:05:26 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://webservices.server/}ExampleWebServiceService from class server.webservices.ExampleWebService
Done creating client
javax.xml.ws.soap.SOAPFaultException: Cannot create a secure XMLInputFactory
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:157)
    at $Proxy38.printString(Unknown Source)
    at ExampleNmsWebServiceClient.printString(ExampleNmsWebServiceClient.java:29)
    at ExampleNmsWebServiceClient.main(ExampleNmsWebServiceClient.java:40)
Caused by: org.apache.cxf.binding.soap.SoapFault: Cannot create a secure XMLInputFactory
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:835)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1606)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1502)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
    ... 3 more

我发现一个页面显示“无法创建安全的XMLInputFactory”可以通过将org.apache.cxf.stax.allowInsecureParser属性设置为"1“来修复,这就是我尝试在系统属性中设置它的原因,但这并不起作用。我还尝试将-Dorg.apache.cxf.stax.allowInsecureParser=1添加到运行客户机的java命令中,但也不起作用。(也没有将其设置为"true“而不是1。)对如何解决这个错误有什么想法吗?

EN

回答 14

Stack Overflow用户

发布于 2014-10-31 06:38:51

我也有过类似的问题

setDomainEnv.sh中将此-Dorg.apache.cxf.stax.allowInsecureParser=1添加到JAVA_OPTIONS之后,它现在可以正常工作了。

票数 20
EN

Stack Overflow用户

发布于 2014-04-23 01:34:41

我在weblogic上遇到了这个问题,并通过将以下代码添加到我的weblogic-application.xml中修复了这个问题

代码语言:javascript
复制
<prefer-application-packages>
       <package-name>com.ctc.wstx.*</package-name>
</prefer-application-packages>
票数 13
EN

Stack Overflow用户

发布于 2013-11-21 22:34:28

检查在类路径或jre的库/批注或类似文件中找到的任何其他版本的woodstox。听起来可能会采用较老的4.1版本。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20114945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档