`

Axis2发布调用webService笔记

阅读更多
   说名:项目中需要用到webservice的发布和调用,在网上找了一些资料总算是弄出来了,现将发布和调用做下简单总结。

第一步,准备工作。

1、  下载axis2 2进制的包和war包:

axis2-1.4.1-war.zip:放到tomcate的文件

axis2-1.4.1-bin.zip:通过命令行生成测试代码

2、把下载后的war放入tomcatwebapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2,然后在浏览器中输入http://localhost:8080/axis2/,如果一切正常你会看到下面的画面:

 

       3、就开始准备一下axis2eclispe的插件了。axis2eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。

      分别是:axis2-eclipse-service-archiver-wizard.zipaxis2-eclipse-codegen-wizard.zip

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



 

然后开始第二步,先来发布一个webservice

       package com.deltaj.server;

 

publicclass SimpleServer {

    /**

     *简单的测试方法

     */

    public String simpleMethod(String name) {

           return name + "Say this is a Simple method ^-^";

        }

}

主要的过程就是如何利用axis2eclispe插件来发布这个服务啦。

1、  eclispe package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Service Archiver



 

2、  然后点击next进入了类选择页面,在这个页面中的Class File Location选择框中选择类所在的文件夹。 (这里的class文件指的路劲是指项目编译之后再WEB-INF目录下的classes文件夹下的class文件,在这里目录指向classes目录就好了<在这里classesclass文件的根目录>具体指定到哪个class文件在下面接着这个目录继续配置)。



 

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的话,你会看到如下画面(这里是找需要发布的class文件,接着上面第2步的路径继续配置就能找到文件,要是出现Error :Classfoundcom.deltaj.server.SimpleServe 就是路劲配置错误)

    

 

7、点击next 后,进入的是输出artiver文件的页面,先要在output File location 中选择要输出的路径,在output  File Name中输入artiver文件的名称。我起的名字是simpleServer

      

 

8、点击finish ,如果看到如下的画面,说名发布成功啦。

   

 

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

   

 

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

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



 

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

 

我们看到自己的发布了一个webservice,那么下一步,自然是想测试下如何来调用它。

 

第三步,使用插件生成简化测试代码。(这里没有成功,改用密令行实现)

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



 

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



 

3、  点击next,然后选择wsdl文件,注意此处要填写上一节我们



 

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



 

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



 

6点击next,如果看到这个页面,说名生成代码成功。



 

7、在package Explorer中刷新一下项目,然后你发现出现2个新的文件SimpleServerStubSimpleServerCallbackHandler 。打开SimpleServerStub你会惊喜的发现。著名的小红叉一个接一个的这是因为没有axis2的类包。我们可以在下载的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我们的工程中。

然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。这个是因为这个插件有个小bug

生成的代码没有实现序列化方法。我们可以自己来加上,在小红叉上点一下,弹出一个小菜单,选择Add unimplemented methods .




 

 

    /**

     *调用发布的服务。

     */

    publicclass SimpleClient {

       publicstaticvoid main(String[] args) throws Exception {

           // 初始化桩文件

           SimpleServerStub stub = new SimpleServerStub();

           // 初始化SimpleMethod方法。

           SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();

           // 调用simpleMethodsetName方法。

           request.setName("zt");

           //      System.out.println(stub.simpleMethod(request).get_return());

       }

    }

 

如果一切正常,你就会看到结果

log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
ztSay this is a Simple method ^-^

可惜我没有那么幸运,通过这种向导的方式, 我遇到了不少人都遇到的一个异常,An error ocurred while completing process    -java.lang.reflect.InvocationTargetException。看到一些人的解决方案,我试着做了,依然不行。 关闭 Eclipse
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar
到下列 folder
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

注册此 jar : 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

   
执行 Eclipse 即可,若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6

很无奈,总不能功亏一篑,再去问同事,他说他没有用插件向导的方式,用的是窗口方式,此时我才发现我缺少了一个包,就是上面提到的axis2的一个 包。里面有bin目录,于是下载后使用命令行,

G:\axis2-1.4.1\bin>wsdl2java -uri http://localhost:8080/axis2/services/simpleServer?wsdl -o D:\tt

如果出现:
Using AXIS2_HOME:   C:\soa\axis2
Using JAVA_HOME:    E:\Program Files\Java\jdk1.6
Retrieving document at 'http://219.237.203.117/cws/cws.asmx?WSDL'.

这三行后,在指定的目录中找到生成的两个java文件, 终于长舒一口气。剩下的就是写main函数测试,这个没有问题。按同样的方法去调用项目中的webservice,竟出现了错误,无奈,但至少这个 axis2的使用时没有问题的。

 

 

四、使用命令行生成简化调用服务的代码:

  1、补充插件的不足之处

复制 %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

注册此 jar : 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

 

2、将axis2-1.4.1-bin.zip解压然后将解压文件放到一个可以找到的地方,在dos命令下执行:

G:\axis2-1.4.1\bin>wsdl2java -uri http://localhost:8080/axis2/services/simpleServer?wsdl -o D:\tt

如果出现:
Using AXIS2_HOME:   C:\soa\axis2
Using JAVA_HOME:    E:\Program Files\Java\jdk1.6
Retrieving document at 'http://219.237.203.117/cws/cws.asmx?WSDL'.

说名生成成功,然后在指定的目录中找到生成的两个java文件,放到项目中去。

 

3、调用发布的service

/**

*调用发布的服务。

*/

    publicclass SimpleClient {

       publicstaticvoid main(String[] args) throws Exception {

           // 初始化桩文件

           SimpleServerStub stub = new SimpleServerStub();

           // 初始化SimpleMethod方法。

           SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();

           // 调用simpleMethodsetName方法。

           request.setName("zt");

           //      System.out.println(stub.simpleMethod(request).get_return());

       }

    }

 

输出结果:

ztSay this is a Simple method ^-^.

 

  • 大小: 69.1 KB
  • 大小: 36.9 KB
  • 大小: 37.7 KB
  • 大小: 34.6 KB
  • 大小: 43.6 KB
  • 大小: 40.7 KB
  • 大小: 54.4 KB
  • 大小: 46.9 KB
  • 大小: 21.4 KB
  • 大小: 63 KB
  • 大小: 61.2 KB
  • 大小: 163.3 KB
  • 大小: 48.3 KB
  • 大小: 50.2 KB
  • 大小: 45.4 KB
  • 大小: 112.5 KB
  • 大小: 93.8 KB
  • 大小: 12 KB
  • 大小: 44.6 KB
  • 大小: 14 KB
分享到:
评论

相关推荐

    WebService笔记

    ### WebService笔记:基于Axis2的WebService开发过程详解 #### 一、概述 WebService是一种用于不同应用程序之间通过网络进行通信的技术。它允许不同系统之间的数据交换和服务调用,支持多种协议标准,如SOAP、XML-...

    webservice笔记

    ksoap2是一个用于Android平台的WebService客户端库,它简化了SOAP请求的创建和解析过程,使得开发者可以在移动设备上轻松调用WebService。 #### 四、WebService的工作流程 WebService的交互过程主要包括以下步骤:...

    webservice学习笔记doc文档

    总的来说,这份学习笔记详细地介绍了如何使用Apache Axis2在Eclipse中开发和测试Web Service,以及如何创建客户端进行调用。此外,还暗示了Web Service与Socket通信的潜在结合,这对于理解Web Service的原理和实践都...

    WebService学习笔记0001

    这种设计使得服务提供者可以发布服务,而服务消费者可以在任何支持WebService的平台上调用这些服务,实现了跨平台、跨语言的互操作性。 二、WebService工作原理 1. WSDL(Web Services Description Language):是...

    axis2学习笔计

    2. **Apache Axis2框架**:Axis2的架构和优势,安装与配置流程,以及服务发布和客户端生成的方法。 3. **源码理解**:对Axis2源码的阅读和分析,帮助开发者了解其工作流程和设计模式。 4. **服务开发**:使用Axis2...

    OracleEBS-WebService开发笔记.pdf

    ### OracleEBS-WebService开发笔记知识点总结 #### 一、概述 **OracleEBS-WebService开发笔记** 是一份详尽的文档,旨在介绍如何利用 WebService 技术进行 Oracle E-Business Suite (EBS) 的集成开发。该文档由 ...

    Axis学习笔记(网页转贴)

    **Axis学习笔记(网页转贴)** Axis是一个开源的Java库,主要用于创建和使用Web服务。它是Apache软件基金会的一部分,广泛应用于开发基于SOAP(简单对象访问协议)的Web服务。本学习笔记将深入探讨Axis在Web服务开发...

    webservice入门学习代码笔记

    2. **WSDL(Web Services Description Language)**:WSDL是一种XML格式,用于定义Web服务的接口,描述了服务的位置、可用操作以及如何调用这些操作。它提供了服务提供者和消费者之间的契约,使得服务消费者可以根据...

    Axis1 dev note

    本文档是一份关于Axis1的开发笔记,主要涵盖了服务端和客户端的开发流程。 1. 服务端开发 在服务端开发中,Axis1 提供了根据WSDL(Web Service Description Language)文件来自动生成Java服务类的能力,这极大地...

    webservice 学习相关

    开发者可以通过这些实例学习如何定义服务接口、实现服务逻辑、发布服务以及如何编写客户端代码来调用这些服务。 "新建 文本文档.txt"可能是一份简单的文本文件,可能包含笔记、命令行指令或者一些关键概念的解释,...

    电信SP业务开发实例

    AXIS2是一个SOAP引擎,用于处理Web服务,其lib目录下的jar包是开发WebService业务的关键依赖。 配置环节,需要将AXIS2的bin目录添加到系统Path环境变量中,这样可以在命令行中直接调用AXIS2的相关工具。将axis2.war...

    webservices 资源

    “note.rar”可能包含了一些笔记或者教程,涵盖了Web服务开发的基础知识,包括如何创建服务、发布WSDL、调用服务等。 “JavaWebServiceSoapHeader.rar”可能是一个Java Web服务示例,其中包含了处理SOAP头的代码,...

Global site tag (gtag.js) - Google Analytics