springmvc+cxf3.0整合

 最近在项目上需要使用webservice,第一时间想到的就是cxf,以前用的xfire感觉老麻烦了,所以改用升级版 的cxf, 整合的过程无比的头痛,特作此文,方便大家借鉴。废话不多说,以下是简要的步骤:


第一步:去官网下载cxf3.0,把里面的jar包全部复制到项目里面去(一共接近40m的jar包全进去了,省事);

第二步:接口和实现类

                     接口



                   实现类更简单



什么都不用写,就可以了,关键是第三步的配置文件


第三步:配置文件

     1.web.xml中,添加下面这些



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.新建一个跟applicationcontext.xml同级的 spring-cxf.xml,内容如下



到些,配置文件部分也写完了。

启动测试,可以访问(地址的话我就不说了吧,应该都知道了),弄了半天,经过了各种错误以后,用soapUI测试,终于可以调用了。


有几个问题是过程中遇到的,值得注意一下:


1.网上在spring-cxf.xml中都是import 三个cxf-*.xml文件,我这边只引用了两个也没啥问题,不知道那个cxf-extenion-soap.xml有啥用,我引用了以后报错,找不到这个文件。

  然后在一个答案中,一位外国友人说,cxf2.4以后只引用cxf.xml就可以了,所以删除了这个.xml,希望有机会了解一下这个xml是用来干嘛的。

   另外一定要在spring-cxf.xml的命名空间上加上这些内容,,原因大家应该也知道,是对 xml文件标签描述,不加的话,你的javaws:endpoint肯定是报错的:



2.还是网上说要去掉contextloadListener这个东西,我没有删除也实现了。

3.cxf.3的lib目录里面有非常多的jar,要根据项目里面己有的删除,避免jar包冲突,像wsdl4j这个jar会引起什么NoSuchMethod Error: readWSDL()异常,其实是jar包冲突了,然后通常报的什么 no bean name cxf,这个基本就是你的配置文件没有写对。

4.一般来说,我们可能要在实现类里面注入自己的service层,所以在spring-cxf.xml中要这样写:



autowire设置成default,是因为我在实现类里面是用@autowired注解的,其实还可以有其他方式,例如 :autowire=byName等,这样,代码里面的注解就得用serviceName注解了。


基本上就是以上的一些问题了,希望对大家有用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值