转自:https://www.aliyun.com/zixun/wenji/1263190.html

CXF服务端:

  1. package com.sean.server;
  2. import javax.jws.WebParam;
  3. import javax.jws.WebService;
  4. @WebService
  5. public interface Plus {
  6. public int add(@WebParam(name="x") int x, @WebParam(name="y") int y);
  7. }
  1. package com.sean.server;
  2. public class PlusImpl implements Plus {
  3. public int add(int x, int y){
  4. return x + y;
  5. }
  6. }
  1. package com.sean.server;
  2. import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
  3. import org.apache.cxf.frontend.ServerFactoryBean;
  4. public class Server {
  5. public static void main(String args[]) throws Exception {
  6. PlusImpl plusImpl = new PlusImpl();
  7. JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
  8. //ServerFactoryBean factory = new ServerFactoryBean();
  9. factory.setServiceClass(Plus.class);
  10. factory.setAddress("http://127.0.0.1:8888/Plus");
  11. factory.setServiceBean(plusImpl);
  12. factory.create();
  13. }
  14. }

程序启动后,访问http://127.0.0.1:8888/Plus?wsdl即可查看自动生成的WSDL文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <wsdl:definitions targetNamespace="http://server.sean.com/"
  3. name="PlusService" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
  4. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  5. xmlns:tns="http://server.sean.com/"
  6. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  7. xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  8. <wsdl:types>
  9. <xs:schema targetNamespace="http://server.sean.com/"
  10. xmlns:tns="http://server.sean.com/" version="1.0"
  11. elementFormDefault="unqualified"
  12. xmlns:xs="http://www.w3.org/2001/XMLSchema">
  13. <xs:element name="add" type="tns:add"/>
  14. <xs:element name="addResponse" type="tns:addResponse"/>
  15. <xs:complexType name="add">
  16. <xs:sequence>
  17. <xs:element name="x" type="xs:int"/>
  18. <xs:element name="y" type="xs:int"/>
  19. </xs:sequence>
  20. </xs:complexType>
  21. <xs:complexType name="addResponse">
  22. <xs:sequence>
  23. <xs:element name="return" type="xs:int"/>
  24. </xs:sequence>
  25. </xs:complexType>
  26. </xs:schema>
  27. </wsdl:types>
  28. <wsdl:message name="addResponse">
  29. <wsdl:part name="parameters" element="tns:addResponse"> </wsdl:part>
  30. </wsdl:message>
  31. <wsdl:message name="add">
  32. <wsdl:part name="parameters" element="tns:add"> </wsdl:part>
  33. </wsdl:message>
  34. <wsdl:portType name="Plus">
  35. <wsdl:operation name="add">
  36. <wsdl:input name="add" message="tns:add"> </wsdl:input>
  37. <wsdl:output name="addResponse" message="tns:addResponse"> </wsdl:output>
  38. </wsdl:operation>
  39. </wsdl:portType>
  40. <wsdl:binding name="PlusServiceSoapBinding" type="tns:Plus">
  41. <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
  42. <wsdl:operation name="add">
  43. <soap:operation style="document" soapAction=""/>
  44. <wsdl:input name="add">
  45. <soap:body use="literal"/>
  46. </wsdl:input>
  47. <wsdl:output name="addResponse">
  48. <soap:body use="literal"/>
  49. </wsdl:output>
  50. </wsdl:operation>
  51. </wsdl:binding>
  52. <wsdl:service name="PlusService">
  53. <wsdl:port name="PlusPort" binding="tns:PlusServiceSoapBinding">
  54. <soap:address location="http://127.0.0.1:8888/Plus"/>
  55. </wsdl:port>
  56. </wsdl:service>
  57. </wsdl:definitions>

如果服务端使用ServerFactoryBean类,则最终生成的WSDL文件略有不同

CXF客户端:

如果服务端使用ServerFactoryBean类,则客户端需要使用JaxWsServerFactoryBean类

如果服务端使用JaxWsServerFactoryBean类,则客户端需要使用JaxWsProxyFactoryBean类

  1. package com.sean.client;
  2. import org.apache.cxf.frontend.ClientProxyFactoryBean;
  3. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  4. import com.sean.server.Plus;
  5. public class Client {
  6. public static void main(String[] args) {
  7. //ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
  8. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  9. factory.setAddress("http://127.0.0.1:8888/Plus");
  10. Plus client = factory.create(Plus.class);
  11. System.out.println(client.add(2, 2));
  12. System.exit(0);
  13. }
  14. }

无论服务端使用ServerFactoryBean类还是JaxWsServerFactoryBean类,都可在客户端使用JaxWsDynamicClientFactory类,并通过反射的方式调用WebService服务端

  1. package com.sean.client;
  2. import org.apache.cxf.endpoint.Client;
  3. import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
  4. public class Client2 {
  5. public static void main(String[] args) throws Exception {
  6. JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
  7. Client client = factory.createClient("http://127.0.0.1:8888/Plus?wsdl");
  8. Object[] inputs = {1, 2};
  9. Object[] result = client.invoke("add", inputs);
  10. System.out.println(result[0]);
  11. }
  12. }

基于Apache CXF的Web Service服务端/客户端的更多相关文章

  1. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice

    一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...

  2. 使用Eclipse自带Web Service插件(Axis1.4)生成Web Service服务端/客户端

    创建一个名字为math的Java web工程,并将WSDL文件拷入该工程中 将Axis所需的jar包拷贝至WebRoot\WEB-INF\lib目录下,这些jar包会自动导入math工程中 一,生成W ...

  3. Eclipse+Axis使用WSDL文件生成Web Service服务端/客户端

    JDK版本:1.5.0_22 Eclipse版本:Helios Service Release 2(3.6.2) WSDL文件的创建过程见http://blog.csdn.net/a19881029/ ...

  4. 使用Eclipse自带的Axis1插件生成Web Service服务端客户端

    JDK版本:1.5.0_22 Eclipse版本:Helios Service Release 2(3.6.2) WSDL文件的创建过程见http://blog.csdn.net/a19881029/ ...

  5. 使用CXF开发Web Service服务

    1.使用CXF开发Web Service服务端 1.1 开发一个Web Service业务接口,该接口要用@WebService修饰 (1)创建一个Java项目MyServer (2)在MyServe ...

  6. Apache CXF实现Web Service(5)—— GZIP使用

    Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...

  7. 使用axis开发web service服务端

    一.axis环境搭建 1.安装环境 JDK.Tomcat或Resin.eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4下载A ...

  8. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service

    起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先 ...

  9. Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

    实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http: ...

随机推荐

  1. WEBGL学习笔记(七):实践练手1-飞行类小游戏之游戏控制

    接上一节,游戏控制首先要解决的就是碰撞检测了 这里用到了学习笔记(三)射线检测的内容了 以鸟为射线原点,向前.上.下分别发射3个射线,射线的长度较短大概为10~30. 根据上一节场景的建设,我把y轴设 ...

  2. weborm aspx开发基础

    ASP.NET - .net开发网站应用程序的技术总称,来源于 ASP 两种方法技术—WebForm: MVC:java用 十二个表单元素: 文本框<input type="text& ...

  3. jquery自动完成插件的使用

    .ui-autocomplete { z-index: !important; max-height: 100px; overflow-y: auto; /* 防止水平滚动条 */ overflow- ...

  4. 第5章分布式系统模式 Broker(代理程序)

    许多复杂的软件系统运行在多个处理器或分布式计算机上.将软件分布在多台计算机上的原因有多种,例如: 分布式系统可以利用多个 CPU 或一群低成本计算机的计算能力. 某个软件可能仅在特定计算机上可用. 出 ...

  5. JavaWeb中使用到的类与接口整理(一)servlet包

    javaweb学了半本,整理了一下Servlet技术模型.servlet容器模型.jsp技术模型中的类与接口,有助于理解web应用中的页面跳转和参数传递,目录: HttpServlet 可作Scope ...

  6. 机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)

    背景 最近互联网上出现一个热词就是“freestyle”,源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的根据一段主题讲一串r ...

  7. 『转』The Beginning of your Design Career

    想想,如果明天我开始学日语,坚持到毕业,其实也可以日语入门了.所以机会都是抓住,当初,也就是去年的时候,我那个时候就开始坚持日语入门,想想现在应该可以开始N2了吧-所以...过去不去理会,现在开始继续 ...

  8. bootstrap3-dialog:更强大、更灵活的模态框

    用过bootstrap框架的同学们都知道,bootstrap自带的模态框用起来很不灵活,可谓鸡肋的很.但nakupanda开源作者封装了一个更强大.更灵活的模态框——bootstrap3-dialog ...

  9. 【seo】title / robots / description / canonical

    1.title title,就是浏览器上显示的那些内容,不仅用户能看到,也能被搜索引擎检索到(搜索引擎在抓取网页时,最先读取的就是网页标题,所以title是否正确设置极其重要. 1)title一般不超 ...

  10. Webstorm 破解2017.1 for Mac

    废话不多说,改了去年分享2016版本的文章,给同学们带来2017.1版本的Mac版本.(win版本网上很多,我这里就不贴出来了). 1.去官仿下载最新的版本  https://www.jetbrain ...