由于公司的需求,需要写几个银行接口写模拟器(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. 第四弹:overfeat

    overfeat是在AlexNet出现后,推出来的模型,其不仅用于物体分类,来用于定位,检测等,可以说是一个涉及很多应用场景的通用模型,值得看看. 本文将从两个方面来讲解,第一部分从论文角度来说一说, ...

  2. WPF教程:依赖属性

    一.什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值.依赖属性可支持WPF中的样式设置.数据绑定.继承.动画及默认值. 将所有的属性都设置为依赖属性并不总是正确的解决 ...

  3. DEDECMS模板中dede标签使用php和if判断语句的方法

    先来看看下面这个标签{dede:field.tong_gg php=yes}if(@me==""||empty(@me))@me="<p>无</p> ...

  4. hibernate---一对一双向外键关联 (重要)

    husband--wife: one to one 双向外键关联: 主导方: @OneToOne @JoinColumn(name="wifeId") 被主导方: @OneToOn ...

  5. (四)Jquery Mobile表单

    Jquery Mobile表单与列表 一.JM表单      1.表单      普通html表单            效果:          2.只能输入数字的表单           效果:  ...

  6. CodeForces 621B Wet Shark and Bishops

    记录一下每个对角线上有几个,然后就可以算了 #include<cstdio> #include<cstring> #include<cmath> #include& ...

  7. python------unicode字符串转换为其他类型

    问题描述: 一下字符串转换为json类型 {u'src': u'crawl', u'cid': u'Ctengbangguoji', u'datatype': u'ItemBase', u'times ...

  8. 入门经典——基础数据结构专题(List)

    UVA127 链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  9. ucos事件邮箱信号量队列详解

    Ucos的事件分为时钟,信号量,互斥性信号量,消息队列,以及消息邮箱 首先说信号量 信号量在ucos中的类型定义为OS_EVENT_TYPE_SEM,在任务控制块ecb中,主要是用到的是信号量计数器O ...

  10. IOS开发-UI学习-UIImageView控件

    在页面上展现本地图片: // 使用本地图片 // 先初始化UIImageView myImageV = [[UIImageView alloc]initWithFrame:CGRectMake(, , ...