现在的位置: 首页 > 综合 > 正文

springmvc+cxf3.0整合

2014年09月18日 ⁄ 综合 ⁄ 共 1412字 ⁄ 字号 评论关闭

 最近在项目上需要使用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注解了。

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

抱歉!评论已关闭.