最近把XFire框架搭建的一个webservice换成CXF框架。访问webservice的客户端是C#写的。客户端调用webservice,数据能在客户端得到。看起来显然是成功了。
但其中在VS中添加CXF服务(Add Service Reference)时,当然首先输入地址(Address),点击go,看看能不能连接服务,结果是能的。但与此同时,tomcat在命令行窗口有警告输出。如果不理会这些警告,自然没有下文了。
警告信息如下:
2015-11-15 16:25:54 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
警告: Interceptor for {http://ACOService.com/}HelloWorldImplService has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: No such operation: (HTTP GET PATH_INFO: /cxf-project/services/HelloWorld) 2015-11-15 16:25:55 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
警告: Interceptor for {http://ACOService.com/}HelloWorldImplService has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.
第一个警告信息,我网上搜了搜,大部分都是说,服务地址没写全,比如http://192.168.1.127:8080/cxf-project/services/HelloWorld(应该是http://192.168.1.127:8080/cxf-project/services/HelloWorld?wsdl),但我是写全的。我不知道什么地方出错了。
第二个警告信息,同样google了一下,要绑定@BindingType(value=SOAPBinding.SOAP12HTTP_BINDING),加上之后,第二个警告信息果然没有了,但出现了另一个警告信息
2015-11-15 16:29:04 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
警告: Interceptor for {http://ACOService.com/}HelloWorldImplService has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: MustUnderstand headers: [{http://www.w3.org/2005/08/addressing}Action, {http://www.w3.org/2005/08/addressing}To]
are not understood.