关于webservice框架cxf遇到的一些问题
关于webservice框架cxf遇到的一些问题
代码贴上:
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.java1234.service.HelloWorld;
import com.java1234.service.impl.HelloWorldImpl;
public class Server {
public static void main(String[] args) {
System.out.println("webservice start!");
HelloWorld helloWorldImpl = new HelloWorldImpl();
String address =
"http://192.168.0.101/hello?wsdl";
// Endpoint.publish(address, helloWorldImpl);
JaxWsServerFactoryBean factoryBean = new
JaxWsServerFactoryBean();
factoryBean.setAddress(address);
factoryBean.setServiceClass(HelloWorld.class);
factoryBean.setServiceBean(helloWorldImpl);
factoryBean.create();
System.out.println("webservice started!");
}
}
警告: Interceptor for {http://impl.service.test.com/}TestService
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: No binding operation info while
invoking unknown method with params unknown.
解决方式:
将访问地址修改为http://localhost:8080/cxf/TestService?wsdl即可加入了?wsdl
警告: Interceptor for {http://impl.service.test.com/}TestService
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.
原因是soap协议不匹配,要使用soap1.2协议
在接口或实现类上声明,注意要引入geronimo-jaxws_2.2_spec-1.0.jar包
@BindingType(value =
"http://www.w3.org/2003/05/soap/bindings/HTTP/") 或
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
cxf 做webservice客户端使用soap1.2协议
<jaxws:client id="cdsPatientServices"
address="http://localhost:8181/cxf/v1/soap/patient"
bindingId="http://www.w3.org/2003/05/soap/bindings/HTTP/"
serviceClass="net.carefx.cds.v1.service.patientservices.CdsPatientServices" />