服务端 spring +cxf,这个网上介绍的比较多,基本上按照来就可以。
可以参考官方介绍 http://cxf.apache.org/docs/writing-a-service-with-spring.html
修改 applicationContext.xml
我是用外部tomcat启动,开始忘记了把cxf相应的jar拷贝到web-inf/lib目录,启动时加载applicationContext.xml总报错,查了很久原因才想起来jar包没拷
另起一工程,通过main方法来测试,遇到各种问题:(
测试代码:
public class WSClient {
public static void main(String[] args) throws Exception {
test1();
test2();
}
public static void test1() {
try {
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient("http://localhost:8080/ws/DemoService?wsdl");
Object[] objs = client.invoke("sayHello", "阿福");
System.out.println(objs[0].toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void test2() {
//创建WebService客户端代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//注册WebService接口
factory.setServiceClass(DemoService.class);
//设置WebService地址
factory.setAddress("http://127.0.0.1:8080/ws/DemoService?wsdl");
DemoService stub = (DemoService) factory.create();
System.out.println("WS return :" + stub.sayHello("This is my first Webservice."));
}
}
1、 javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method
解决方法: 客户端接口包和类名跟服务端保持相同,接口上加注解WebService。
2、 Cannot create a secure XMLInputFactory
解决方法:客户端缺少jar包(stax2-api-3.1.x.jar 和 woodstox-core-asl-4.2.x.jar),客户端所需jar包如下图