使用Cxf 做的服务器中调用时的一个异常解决

异常如下
Caused by: org.apache.cxf.binding.soap.SoapFault: "http://schemas.xmlsoap.org/wsdl/", the namespace on the "definitions" element, is not a valid SOAP version. 
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:131) 
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:755) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2330) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2192) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2036) 
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:696) 
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) 
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
... 145 more 
 
 
 
搜了半天最后是因为
调用时使用的是这种方式:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress( http://192.168.0.121:9090/cloudsun/HelloWorldService?wsdl);

而正确的方式是使用

cxf命令生成的java代码才可以,如

HelloWorld hello = new HelloWorld_Service().getHelloWorldImplPort();

本文已在之处解决的方法,没有关于介绍有关cxf使用webservice的详细介绍!

www.ibuyincn.com

猜你喜欢

转载自nilm61.iteye.com/blog/1246914
今日推荐