CXF入门

1.CXF是基于JAX-WS实现的,JAX-WS规范是一组XML web services的JAVA API,它使用户无需编写复杂的SOAP ENV,WSDL。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。

在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。 
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。

2.使用CXF开发Webservice工程步骤: 

1).为CXF设置编译和开发环境 
在http://cxf.apache.org/download.html下载相应的CXF包,/lib目录下的jar 文件引入工程 
2).创建基于XCF的Webservice服务端工程。
3).编写Webservice的客户端程序,调用服务端服务。

3.CXF中的Factory:

CXF不但可以使用JAX-WS开发web服务,也可以将POJO发布为web服务,对于这两种不同的方式,对应的factory如下:

                                 服务端                               客户端  

JAX-WS                      JaxWsServerFactoryBean             JaxWsProxyFactoryBean

POJO                           ServiceFactoryBean                     ClientProxyFactoryBean

4.CXF使用JAX-WS开发服务端:

(1).定义服务接口:

在接口上添加Webservice注解:@WebService。如:

  1. package service;  
  2. import javax.jws.WebService;  
  3. @WebService  
  4. public interface OrderProcess {  
  5.     String processOrder(Order order);  
  6. }  
 

(2).实现服务接口:

在实现类上也添加Webservice注解:@WebService(endpointInterface = 服务接口全路径,   serviceName= 对外发布的服务名)。如:

  1. package service;  
  2. import javax.jws.WebService;  
  3. @WebService(endpointInterface = "service.OrderProcess",serviceName=”order”)  
  4. public class OrderProcessImpl implements OrderProcess {  
  5.     public String processOrder(Order order) {  
  6.         return "hello world"+order;  
  7.     }  
  8. }  
 

(3).对外发布服务:

  1. //创建web服务工厂  
  2. JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();  
  3. //设置服务类  
  4. factory.setServiceClass(服务接口实现类.class);  
  5. //设置对外发布服务地址  
  6. factory.setAddress(对外发布的服务地址);  
  7. //创建服务  
  8. Server server = factory.create();  
  9. //启动服务  
  10. server.start();  
 

5.CXF使用JAX-WS开发客户端:

  1. //创建web服务代理工厂  
  2. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
  3. //设置要调用的web服务服务端发布地址  
  4. factory.setAddress(web服务的发布地址);  
  5. //设置要调用的web服务  
  6. factory.setServiceClass(web服务接口.class);  
  7. //创建web服务对象  
  8. 服务接口 对象 = (服务接口) factory.create();  
  9. 通过对象调用web服务的方法  
  10. 6.CXF使用POJO开发服务端:  
  11. 和使用JAX-WS开发方式前两步完全一样,第三步稍有不同如下:  
  12. //创建web服务工厂  
  13. ServiceFactoryBean svrFactory = new ServiceFactoryBean();  
  14. //设置服务类  
  15. svrFactory.setServiceClass(服务接口实现类.class);  
  16. //设置对外发布服务地址  
  17. svrFactory.setAddress(对外发布的服务地址);  
  18. //创建服务  
  19. Server server = svrFactory.create();  
  20. //启动服务  
  21. server.start();  
 

6.CXF使用POJO开发客户端:

和JAX-WS方式除了代理工厂不同以外,其他均相同:

  1. //创建web服务代理工厂  
  2. ClientProxyFactoryBean factory = new ClientProxyFactoryBean();  
  3. //设置要调用的web服务服务端发布地址  
  4. factory.setAddress(web服务的发布地址);  
  5. //设置要调用的web服务  
  6. factory.setServiceClass(web服务接口.class);  
  7. //创建web服务对象  
  8. 服务接口 对象 = (服务接口) factory.create();  
 

通过对象调用web服务的方法

7.CXF与Spring的集成:

(1).对工程引入spring支持。

(2).在web.xml文件中添加spring和CXF相应的配置如下:

[xhtml] view plain copy
  1. <web-app>  
  2.   <context-param>  
  3.   <param-name>contextConfigLocation</param-name>  
  4.   <param-value>spring配置文件路径</param-value>  
  5.  </context-param>  
  6.  <listener>  
  7.   <listener-class>  
  8.    org.springframework.web.context.ContextLoaderListener  
  9.   </listener-class>  
  10.  </listener>  
  11.  <servlet>  
  12.   <servlet-name>CXFServlet</servlet-name>  
  13.   <display-name>CXF Servlet</display-name>  
  14.   <servlet-class>  
  15.    org.apache.cxf.transport.servlet.CXFServlet  
  16.   </servlet-class>  
  17.   <load-on-startup>1</load-on-startup>  
  18.  </servlet>  
  19.  <servlet-mapping>  
  20.   <servlet-name>CXFServlet</servlet-name>  
  21.   <url-pattern>/service/*</url-pattern>  
  22.  </servlet-mapping>  
  23. </web-app>  
 

(3).在spring配置文件中导入CXF的相关配置如下:

[xhtml] view plain copy
  1. <import resource="classpath:META-INF/cxf/cxf.xml" />  
  2. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  3. <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
 

(4).在spring配置文件中配置要发布的web服务如下:

[xhtml] view plain copy
  1. <jaxws:endpoint  
  2.    id="……"  
  3.    implementor="服务接口实现类全路径"  
  4.    address="/web服务发布地址(相对地址)" /> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值