新手Axis2 发布Web Service之路

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手Axis2 发布Web Service之路相关的知识,希望对你有一定的参考价值。

由于公司的需求,需要写几个银行接口写模拟器(Mock Server),此次接口需要发布成一个WEB Service。

一开始,我以为只要负责写接口的业务层就行了,具体的框架或是环境搭建可以不用管。在与开发沟通完之后,因为本人对Web Service发布也不懂,完全属于没有概念的那种,开发愿意帮忙搭建一个。

在此期间呢,我开始写业务层,把3个接口的业务层花了一天的时间写完了,加了一些数据库查询的方法以及数据库新的字段以满足此次的业务需求。

开发也把WEB Service的一个小Demo做好了,利用axis2发布Web Service. 我就照着开发的样子,在我们的Mock Server也配了一个,但是却起不来。

1. 错误一:Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

网上搜集了一些资料,基本确认这个是由于jar包冲突造成的,经过很长一段时间调查,发现了这个是由于tomcat plugin和spring boot里面的一个jar包冲突了,后来在开发的帮忙下,在当前这个web service项目里面把spring boot给exclude掉。启动Web Service,无论如何,project就是起不来,网上搜索半天也找不出其原因。最后只能以最笨的办法来查这个问题。

  1. 先在pom文件里去掉axis2的所有依赖包,启动, 没有问题。
  2. 把axis2里面的依赖包,一个一个加,启动,直到找到问题的那个包。
  3. 找到了之后,尝试在这个包里面加了<scope>provided</scope>。启动,没有问题了,但是web service却是不能正常的发布了。

2. 错误二:ClassNotFoundException: org.apache.axis2.transport.http.AxisServlet

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"

这下更没有想法了,加了provided,web service不能正常发布,没加,根本就启动不了,怎么办呢?

而且跟开发确认过了,这个包是很重要的包,一定会在运行的时候用到的,所以不能加provided,加了之后会找不到相应的类。

检查了所有的配置,都没有问题,最后带着一个心理,开发也建议我们用tomcat server而不要用tomcat plugin,因为很少人会用这个,所以带着一种死马当活马医的心态,就试了一把,结果成功了。原因应该是axis如果是用Intellij 里面的tomcat plugin去执行,会有问题,但是用本地的tomcat就没有问题。

这个事情从头到结束花了4天的时间。

总结:

1. 环境应该先搭建好,首先确保环境没有问题,然后再开始写业务层代码。

2. 在碰到环境问题的时候,还是以排除法一个个去看问题,找出问题所在。

3. 环境还是自己搭比较好,虽然感谢开发帮忙弄了一个小demo,但是问题还是很多,自己弄会更为熟悉点。

4. 学习到了不少配置web project的一些东西,如何做调试。以前纯做自动化测试的,没有这方面的经验。

 

以上是关于新手Axis2 发布Web Service之路的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse+Axis2发布WSDL类型的Web Service并用SoapUI测试调用(2021.11.15)

Eclipse+Axis2发布WSDL类型的Web Service并用SoapUI测试调用(2021.11.15)

Eclipse+Axis2发布WSDL类型的Web Service并用SoapUI测试调用(2021.11.15)

Axis2 Web Service Development & Deployment Guide

Axis2实现 web service接口开发 + 客户端调用

Web Service Security with Axis2