webService小记--实现服务端客户端
使用cxf提供的JaxWsServerFactoryBean发布webService服务,wsdl文件中的标签会存在 wsdl:前缀。
直接使用 javax.xml.ws.Endpoint; 调用publish方法发布服务 标签中不包含 wsdl: 前缀。
wsimport 生成的客户端使用方法为通过 Service 调用getXXXport方法 返回接口。接口调用方法
1 JaxWsServerImplService jaxWsServerImplService = new JaxWsServerImplService(); 2 JaxWsServer jaxWsServer = jaxWsServerImplService.getJaxWsServerImplPort(); 3 jaxWsServer.sayHello("aaaaa");
cxf 通过 JaxWsServerFactoryBean 发布服务
1 JaxWsServerFactoryBean serverFactoryBean = new JaxWsServerFactoryBean(); 2 // wsdl地址为 http://localhost:9999/JaxWsServer?wsdl 3 serverFactoryBean.setAddress("http://localhost:9999/JaxWsServer"); 4 // serviceClass 用于指定 service的name 5 serverFactoryBean.setServiceClass(JaxWsServer.class); 6 // 服务端指定实现类 7 serverFactoryBean.setServiceBean(new JaxWsServerImpl()); 8 // 发布服务 9 serverFactoryBean.create(); 10 System.out.println("cxf 发布webService 服务");
cxf 通过 JaxWsProxyFactoryBean 调用服务
1 // 客户端使用的是 jaxWsProxyFactoryBean 不是 jaxWsClientFactoryBean 2 JaxWsProxyFactoryBean proxyFactoryBean = new JaxWsProxyFactoryBean(); 3 // setAddress 指定 wsdl文件地址 4 proxyFactoryBean.setAddress("http://localhost:9999/JaxWsServer?wsdl"); 5 proxyFactoryBean.setServiceClass(JaxWsServer.class); 6 // Object 强转为 JaxWsServer 7 JaxWsServer jaxWsServer = (JaxWsServer) proxyFactoryBean.create(); 8 jaxWsServer.sayHello("JaxWsProxyFactoryBean "); 9 System.out.println("over");
附上jaxWsServer 和 jaxWsServerImpl代码
1 /** 2 * @author dengs 3 * @desc 服务端暴露接口 4 */ 5 @WebService 6 public interface JaxWsServer { 7 @WebMethod 8 void sayHello(@WebParam String name); 9 } 10 11 /** 12 * @author dengs 13 * @desc 服务实现类 14 */ 15 public class JaxWsServerImpl implements JaxWsServer{ 16 17 @Override 18 public void sayHello(String name) { 19 System.out.println("---------------------------------------"); 20 System.out.println("hello "+ name); 21 System.out.println("---------------------------------------"); 22 } 23 }
欺骗自己最简单,欺骗自己最困难。
安慰自己最简单,安慰自己最困难。