axis2学习笔记

以下记录在eclipse中使用axis2开发webservice应用时出现的问题及解决方案.

 

准备工作:

1.下载axis2的2进制包和war,下载地址http://apache.mirro.phpchina.com/ws/axis2/

2.把下载后的war放入tomcat的webapps目录中,启动tomcat,war自动解压为目录axis2,在浏览器中输入http://localhost:8000/axis2/,(我把tomcat的端口改为了8000), 如果一切正常就会看到axis2的HOME界面

 

3.准备axis2的eclipse插件。有两个,一个帮助我们生成aar文件,一个帮我们用wsdl文件生成stub代码。

下载地址

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-service-archiver-wizard.zip

 

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-codegen-wizard.zip

 

下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other

如果安装正确你会看到Axis2 Wizards

 

至此,准备工作完成

 

创建一个普通的java工程,

注意:添加axie2 lib中的所有文件

 

一 . 用axis2发布一个web service的服务

写了一个简单的代码,主要是用于测试

java代码

 

public class SimpleServer {
 
 public String simpleMethod(String name){
  return name+"Say hello"; }
}

 

1.在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Service Archiver
2.然后点击next进入了类选择页面,在这个页面中的Class File Location选择框中选择类所在的文件夹。

     一般是在项目的bin文件夹中

3.点击next之后进入了选择 wsdl文件,这里我们选择skip wsdl。

4. 点击next之后,进入的是选择jar文件的页面,这里我们没有外部的jar,所以点击next直接跳过这个页面。
5.点击next之后,进入的是选择xml页面,这里我们选择的是自动生成xml,也就是勾选Generate the service xml automatically

   这一项
6..点击next之后,进入的是生成xml文件的页面,在service name 里填写这个服务所起的名字,这里我起名为simpleServer,然后在class name 中填写要发布的类,这里一定要写全路径,写好后就可以点击load 按钮,如果一切ok的话,你会看到如下画面

7. 点击next 后,进入的是输出artiver文件的页面,先要在output File location 中选择要输出的路径,

   在output  File Name中输入artiver文件的名称。

8.点击finish,完成。

9.接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat目录中的axis2项目的service目录中。

10.接下来启动tomcat,在地址栏中输入http://localhost:8000/axis2 ,你会看到axis2的欢迎画面.

11.点击Service连接,你会看到发布的服务列表。这里面就能看到我们发布的simpleService

12.点击我们的服务simpleServer的连接,我们会看到。至此,服务发布成功

 

到这一步一般不会有什么问题

 

 

二。 开发客户端调用该服务

 

1.在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Code Generator

 

2.点击next,进入下一个页面,选择从wsdl文件来产生java文件

 

3. 点击next,然后选择wsdl文件,注意此处要填写之前发布的http://localhost:8000/axis2/services/SimpleServer?wsdl

 

4.点击next,进入设置页面,这里就用默认的设置

 

5.点击next,选择输出文件的路径。

 

6.点击next,如果看到这个页面,恭喜你已经生成代码成功

 

不过很不幸的,在到这一步之前 出现了问题

 

a.首先,最后一步点击finish时,报错 -java.lang.reflect.InvocationTargetException

解决如下:

 查了网上资料,此问题出现很多,原因各不相同。相对于 Axis2的这个代码生成插件,在国外的一论坛上发现解决方案,尝试有效:

    1、在axis2-1.4.1-war/axis2/WEB-INF/lib目录下,复制
              backport-util-concurrent-3.1.jar
              geronimo-stax-api_1.0_spec-1.0.1.jar
这两个文件至MyEclipse 6.5/eclipse/plugins/Axis2_Codegen_Wizard_1.3.0/lib下,同时要编辑MyEclipse 6.5/eclipse/plugins/Axis2_Codegen_Wizard_1.3.0下的plugin.xml,将这两个文件添加进去(复制粘贴两项,修改jar文件名为新拷入的文件名即可),再使用codegen插件即可正常生成代码。
    2、若问题仍存在, 尝试改变Eclipse 使用的 JRE,使用 JRE 1.6 ,重新启动 Eclipse。
    3、若仍有问题,将 $workspace位置/.metadata/.plugins下目录 Axis2_Codegen_Wizard 删除,在命令行下切换至$ECLIPSE_HOME目录,然后执行:eclipse -clear
    4、重新启动 Eclipse ,应可解决问题。

我最后在使用过程中又出现了这样一个异常:Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException : Error parsing WSDL,出现了这个错误,我马上上网查资料,中文网站好像还有人解决这个问题,我也查了很多国外网站上面网友提出的相同问题,都没人真正解决这个问题。我只有自己搞了,最后终于被我搞出来了,我分析一下出现这种错误的原因。

    原因是:原来安装的那个Axis2_Codegen_Wizard是有错的,也就是从官方下载下来的,但安装起了过后它会报 java.lang.reflect.InvocationTargetException,以至于不能正确生成代码。当你安装了修改过后的无Bug这个 Axis2_Codegen_Wizard插件过后,再按上面第3步操作,就没问题了。就这样简单。

    这里特别注意:在做项目的时候仔细一点,用测试程序的时候要看看Tomcat是否开着,如果你没开着,一报错,你一慌了,更多的时间都浪费了。

 

 

b.java.lang.NullPointerException问题

解决:

 该问题是缺少 "xercesImpl.jar" and "xml-apis.jar" 包所致,引入axis2 lib中的包即可解决。

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值