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     }

 

 

 

 

 

posted @ 2019-11-19 20:39  不要西红柿  阅读(273)  评论(0编辑  收藏  举报