由于公司的需求,需要写几个银行接口写模拟器(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之路的更多相关文章

  1. Eclipse+tomcat+axis2进行web service部署

    用Eclipse+axis2+tomcat进行web service部署 2016-12-07 目录  1 安装JDK  1.1 下载JDK  1.2 安装和配置JDK  1.3 验证2 安装Ecli ...

  2. 使用Axis2创建Web Service

    Axis2是新一代Web Service开发工具,目前最新版本是1.5.本文主要介绍如何用Axis2创建Web Service. 首先下载二进制包和war包,将war包复制到Tomcat的webapp ...

  3. tomcat发布web service教程

    这几天一直在准备找工作,自学了关于web service的一些基本的内容,也遇到了不少问题.现在就把我自己学到的知识和大家分享一下,由于是初学,所以有什么错误的地方请大家帮忙指正,感激不尽~~!! 1 ...

  4. AXIS2调用web service,返回结果用GZIP解压缩

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  5. CXF之三 Tomcat中发布Web Service

    服务接口及实现类请参考CXF之一 创建Maven Web项目,在pom.xml中添加CXF和spring Web的引用,由于CXFServlet需要Spring Web的支持. <project ...

  6. Java主流Web Service框架介绍:CXF和Axis2

    CXF和Axis2是目前java平台上最主流的两个框架,虽然两个项目都隶属ASF,但却是基于不同思想和风格实现的,因此也各有所长.   CXF:http://cxf.apache.org/ 是由过去的 ...

  7. 如何创建和发布.asmx Web Service

    创建和发布Web ServiceWeb服务方法中可以返回一个DataSet对象 WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用.ASP.NET Web Form程序.甚至 ...

  8. Web service 框架比较CXF xfire aisx2 aisx

    Web 服务框架.它还体现了从 Axis 1.x 系列获得的经验和最近两年在 Web 服务领域的发展.推出 Axis2 的主要原因之一是从速度和内存方面获得更好的性能——不过还添加了一些新特性和功能. ...

  9. JAVA开发Web Service几种框架介绍

    郑重声明:此文为转载来的,出处已不知了,侵告删. 在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS( ...

随机推荐

  1. DNS原理及其解析过程

    网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133” 之类的IP地址,而不能认识域名.我们无法记住10个以上IP地 ...

  2. windows2003 IIS6 部署MVC3和MVC4程序

    1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net Framework4.0 4. ...

  3. Linux系统目录

    [root@localhost ~]# ls /bin dev home lost+found misc opt root selinux sys usrboot etc lib media net ...

  4. TLD视觉跟踪算法(转)

    源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...

  5. iOS开发网络篇之文件下载、大文件下载、断点下载

    from: http://www.jianshu.com/p/f65e32012f07

  6. JavaScript(一)---- 概述

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...

  7. Binary转换成Hex字符串

    想调优别人的代码,网上搜索一下Binary to Hexstring的转换,全是利用printf.scanf之类实现的,效率好低,还是自己想个简单的办法吧! .......此处省略一万字....... ...

  8. .NET运行机制

    .NET运行机制   .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境..NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的各应 ...

  9. C语言-知识点及学习路线

    最近进行了为期两周的C语言培训,把几年前学过的C语言又重新学习了一遍,然后根据学习的内容和过程,总结了一下学习路线.这是基本的C语言学习路线,相当于编程语言类的基础,再根据自己究竟是要做单片机开发,还 ...

  10. 安卓handler、thread实现异步任务

    [转]http://blog.csdn.net/lanpy88/article/details/6659630 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.   ...