采用CXF框架发布WebService

本文详细介绍了如何采用CXF框架发布WebService,包括使用ServerFactoryBean和JaxWsServerFactoryBean的区别,注解支持,添加拦截器,以及导出Wsdl文件并进行客户端测试的过程。还讨论了日志拦截器的配置,以及服务调用时的WSDL一致性检查和SOAP通信方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. CXF介绍 :soa的框架
    * cxf 是 Celtrix (ESB框架)和 XFire(webserivice) 合并而成,并且捐给了apache  
    * CxF的核心是org.apache.cxf.Bus(总线),类似于Spring的 ApplicationContext
    * CXF默认是依赖于Spring的
    * Apache CXF 发行包中的jar,如果全部放到lib中,需要 JDK1.6 及以上,否则会报JAX-WS版本不一致的问题

    * CXF 内置了Jetty服务器 ,它是servlet容器,好比tomcat


  2.CXF特点
    1. 与Spring、Servlet做了无缝对接,cxf框架里面集成了Servlet容器Jetty 
    2. 支持注解的方式来发布webservice
    3. 能够显示一个webservice的服务列表
    4. 能够添加拦截器:输入拦截器、输出拦截器 :

         输入日志信息拦截器、输出日志拦截器、用户权限认证的拦截器


1. ServerFactoryBean
*    - 不设置注解也可以发布webservice服务, 不支持注解

*    - 不支持拦截器的添加

2. JaxWsServerFactoryBean
*    - 支持注解

*    - 可以添加拦截器

 3. webservice 访问流程:
*    1. 检测本地代理描述的wsdl是否与服务端的wsdl一致 ,俗称为握手
*    2. 通过soap协议实现通信 ,采用的是post请求 , 数据封装在满足soap规约的xml中
*    3. 返回数据 同样采用的是soap通信,  数据封装在满足soap规约的xml中



步骤一:我们首先要导入CXF发布webService需要的jar包



步骤二:编写接口及其实现类(这里用的是获取语言的接口LanguageService,实现类LanguageServiceImp)






以上我们可以看到,我们可以不用采取@WebService()注解的方式来指定提供服务的接口,因为bean.setServiceClass()已经为我们指定了。以及bean.setServiceBean()为我们指定了服务实现的bean。


查看wsdl文件




以上我们采用的ServerFactoryBean的方式来获取服务器工厂实例。通过操作发现,我们无法对wsdl文件通过注解进行修改。(修改无效)

所以我们要通过JaxWsServerFactoryBean工厂类来获取实例便可以利用注解对wsdl文件进行修改。

同时,我们也可以通过JaxWsServerFactoryBean的实例bean设置日志输入输出的拦截器



首先我们可以看到wsdl文件被我们通过注解的方式修改了




步骤三:我们将发布好的wsdl文件进行导出生成.class文件。






步骤四:将生成好的.class文件导成jar包





步骤五:建立一个新项目,模拟客户端,并将该jar文件导入lib下,对发布的webservice进行测试(获取Language)




启动服务器端(发布WebService的项目)然后启动客户端(LanguageTest)



同时因为我们在JaxWsServerFactoryBean中设置了日志拦截器,所以我们在查看wsdl文件和进行获取language的时候都会有日志信息进行输出。




我们每次调用服务的时候,webservice都会检验本地代理的wsdl文件是否与服务器端的wsdl文件是否一致。然后通过soap实现通信。我们采用的是post请求 , 数据封装在满足soap规约的xml中





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值