Maison >base de données >tutoriel mysql >springmvc中使用axis2中的一些问题
前两天,技术总监说最近我们项目中使用的一些技术比如数字签名,比如远程视频等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/*以后再调用我们的代码时,这时没有错误,调用成功。