欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

springmvc中使用axis2中的一些问题

程序员文章站 2022-06-16 18:23:09
...

前两天,技术总监说最近我们项目中使用的一些技术比如数字签名,比如远程视频等webservice使用的都是axis2,于是我只能开始将前两天写的cxf改成axis,经过两天多的试验,终于试出来,好吧,下面发一下在试验过程中一些问题和解决方法。 1axis1.4中jar路径有

前两天,技术总监说最近我们项目中使用的一些技术比如数字签名,比如远程视频等webservice使用的都是axis2,于是我只能开始将前两天写的cxf改成axis,经过两天多的试验,终于试出来,好吧,下面发一下在试验过程中一些问题和解决方法。

1axis1.4中jar路径有空格会导致invalid path 错误,后来发现是axis2的bug,在后来的版本中被修复。于是将axis2的版本升级到1.6.2,axis2的1.5版本以后,axis2被分成了很多包,不在是一个包,比如transport,所以在maven中将这些依赖包一一加入,又因为在axis2-transport中又包含了一个servlet.jar,这个在前面已经加入了,所以将transport中的依赖包排除掉。

2services.xml放置问题,这个是刚开始没注意,有的教程上说放在classpath下的META-INF目录下,不过发现不行,后来又从头看教程,终于发现说实在web-inf下建立services目录然后在service目录中新建一个axis目录(这个目录名称可以随意写,当然不要有空格,中文之类的),然后在axis目录下新建META-INF,然后将services.xml放到该目录下在,然后就可以看到部署的wsdl

3 springmvc与axis结合的问题,在axis2的services.xml中使用spring管理的bean,而我们项目中采用的是springmvc的servlet来初始化我们的spring容器,而不是使用contextLoadLister,这时部署可以,wsdl可以出来,但是wsdl中看不到我们写的service,所以将mvc的bean还是用springmvc的servlet来加载,然后axis2的bean使用contextLoadLister来加载。这里使用了axis2使用了spring,所以要加入axis2-spring的依赖。

4这个问题很莫名奇妙,我是试了N久才试出来的,但是原因不明,我在web.xml中配置的AxisServlet的url是/service/*,而后通过部署后的soap:address是/services路径,多了一个s,这时调用我们的services时总会出现各种错误。而后将url改成/services/*以后再调用我们的代码时,这时没有错误,调用成功。