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 @   不要西红柿  阅读(280)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示