`

axis2开发并调用webservice

阅读更多
本文将介绍如何使用 Tomcat5.0 Apache Axis2开发、部署及测试一个简单的 Web Service应用。
1 工作环境
Eclipse 3.1.2+Lomboz+jdk1.5+ apache-tomcat-5.0.18+AXIS2:1.0(war版本和 bin版本 )
[url]http://ws.apache.org/axis2/download/1_0/download.cgi[/url]页面 下载 AXIS2 Binary Distribution url: [url]http://apache.justdn.org/ws/axis2/1_0/axis2-std-1.0-bin.zip[/url] war Distribution url: [url]http://apache.justdn.org/ws/axis2/1_0/axis2-1.0-docs.zip[/url]。把这两个文件解压,比如解压缩的后得目录为 C:"axis2-std-1.0-bin C:"axis2.war
Eclipse下通过菜单 window—preferences…--Java—Build Path—User Libraries 新建一个 user library,比如名字就叫 axis2 C:"axis2-std-1.0-bin"lib下的所有 jar文件包含进来。把 axis2.war拷贝到 %TOMCAT-HOME%/webapps下面。
 
2.检验安装
Eclipse下启动 Tomcat,在地址栏内输入 [url]http://localhost:8080/axis2/[/url]
点击 Validate,将到达  Axis2 Happiness Page
3 WebService中的 HelloWorld
1)新建一个动态 web工程,取名 ZZaxis,右键点击项目名,选择 Properties-Java Build Path-Add Library-User Library-axis2
 
2)新建 package sample,建立 HelloWorld.java,代码如下。
HelloWorld.java
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
 
public class HelloWorld {
       public OMElement sayHello(OMElement in){
              String name=in.getText();
              String info=name+"HelloWorld!";
              OMFactory fac=OMAbstractFactory.getOMFactory();
              OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
              OMElement resp=fac.createOMElement("sayHelloResponse",omNs);
              resp.setText(info);
              return resp;
       }
}
 
3)在 WebContent"META-INF"建立 services.xml,代码如下。
services.xml
<?xml version="1.0" encoding="UTF-8"?>
<service name="HelloWorld">
<description>
 This is a sample Web Service.
</description>
<parameter name="ServiceClass" locked="false">sample.HelloWorld</parameter>
<operation name="sayHello">
 <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
 
4)将目录 sample和目录 META-INF组织如下(新建目录 example)。
+-example
|-------- +-sample
    |------- HelloWorld.class
|---------+-META-INF
       |-------services.xml
 
5)打包生成 aar文件。
在命令符环境下,将当前目录转到 example
jar cvf HelloWorld.aar . //注意最后一个点,在当前目录下生成 HelloWorld.aar
 
6)在 Eclipse中启动 Tomcat,在地址栏下键入 [url]http://localhost:8080/axis2/[/url]。选择 Administration,输入用户名 admin,密码 axis2。选择左侧工具栏 Tools- Upload Service,上传之前打包的 HelloWorld.aar。该文件将在 <CATALINA_HOME>/webapps/axis2"WEB-INF"services目录下。
 
7)编写客户端检验代码。新建 Java Project,取名为 ZZaxisClient。右键点击项目名,选择 Properties-Java Build Path-Add Library-User Library-axis2
 
8)新建 package example.client。建立 TestClient.java,代码如下。
TestClient.java
package example.client;
 
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
 
public class TestClient {
       private static EndpointReference targetEPR=new EndpointReference
        ("http://localhost:8080/axis2/services/HelloWorld");
       public static OMElement getSayHelloOMElement(){
              OMFactory fac=OMAbstractFactory.getOMFactory();
              OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
              OMElement method=fac.createOMElement("sayHello",omNs);
              method.setText("ZJ");
              return method;
       }
       public static void main(String[] args){
              try{
                     Options options=new Options();
                     options.setTo(targetEPR);
                     ServiceClient sender=new ServiceClient();
                     sender.setOptions(options);
                     OMElement sayHello=TestClient.getSayHelloOMElement();
                     OMElement result=sender.sendReceive(sayHello);
                     System.out.println(result);
              }
              catch(Exception axisFault){
                     axisFault.printStackTrace();
              }
       }
}
 
9)测试, run TestClient.java as Java Application。结果:
<hw:sayHelloResponse xmlns:hw="http://helloworld.com/"
xmlns:tns="http://ws.apache.org/axis2">
ZJHelloWorld!

</hw:sayHelloResponse>


1 HelloWorld做了些什么?
HelloWorld功能非常简单,在客户端输入你的姓名,本例中为 ZJ。参数传递到服务器端后,经过处理将返回 name+"HelloWorld!",本例中为 ZJ HelloWorld!
 
2.服务器端文件 HelloWorld.java
HelloWorld.java
package sample;
 
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
 
public class HelloWorld {
    //读取 client getSayHelloOMElement()方法传递的参数 in
       public OMElement sayHello(OMElement in){
        // in转换为 String
              String name=in.getText();
              String info=name+"HelloWorld!";
        //创建 response SOAP包。
              OMFactory fac=OMAbstractFactory.getOMFactory();
        // OMNamespace指定此 SOAP文档名称空间。
              OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
        //创建元素 sayHello,并指定其在 omNs指代的名称空间中。
              OMElement resp=fac.createOMElement("sayHelloResponse",omNs);
        //指定元素的文本内容。
              resp.setText(info);
              return resp;
       }
}
 
3 services.xml部署文件
services.xml
<?xml version="1.0" encoding="UTF-8"?>
//下面定义服务名
<service name="HelloWorld">
<description>
 This is a sample Web Service.
</description>
// ServiceClass指定 Java Class的位置,即实现服务的类。
<parameter name="ServiceClass" locked="false">sample.HelloWorld</parameter>
// operation  Java Class中方法名对应。
<operation name="sayHello">
// messageReceiver看下文注解。
 <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
 
注解: 消息交换模式。
目前 Axis2支持三种模式: In-Only Robust-In In-Out In-Only消息交换模式只有 SOAP请求,而不需要应答; Robust-In消息交换模式发送 SOAP请求,只有在出错的情况下才返回应答; In-Out消息交换模式总是存在 SOAP请求和应答。本例使用 In-Out模式。
 
4.客户端文件 TestClient.java
TestClient.java
package example.client;
 
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
 
public class TestClient {
    // targetEPR指定打包的 Service .aar文件 在容器中的物理位置。
       private static EndpointReference targetEPR=new EndpointReference
        ("http://localhost:8080/axis2/services/HelloWorld");
       public static OMElement getSayHelloOMElement(){
        //创建 request SOAP包。
              OMFactory fac=OMAbstractFactory.getOMFactory();
        // OMNamespace指定此 SOAP文档名称空间。
              OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
        //创建元素 sayHello,并指定其在 omNs指代的名称空间中。
              OMElement method=fac.createOMElement("sayHello",omNs);
        //指定元素的文本内容。
              method.setText("ZJ");
              return method;
       }
       public static void main(String[] args){
              try{
                     Options options=new Options();
                     options.setTo(targetEPR);
                     ServiceClient sender=new ServiceClient();
                     sender.setOptions(options);
                     OMElement sayHello=TestClient.getSayHelloOMElement();
            //发出 request SOAP
//同时将得到的远端由 sayHello方法返回的信息保存到 result
//通过 services.xml能准确找到 sayHello方法所在的文件。
                     OMElement result=sender.sendReceive(sayHello);
              }
              catch(Exception axisFault){
                     axisFault.printStackTrace();
              }
       }
}
 
5 .Axis2 简介
Apache Axis2  Axis的后续版本,是新一代的 SOAP引擎。 Axis2的主要特点有:
1)采用名为  AXIOM AXIs Object Model)的新核心  XML 处理模型,利用新的 XML解析器提供的灵活性按需构造对象模型。
 
2)支持不同的消息交换模式。目前 Axis2支持三种模式: In-Only Robust-In In-Out In-Only消息交换模式只有 SOAP请求,而不需要应答; Robust-In消息交换模式发送 SOAP请求,只有在出错的情况下才返回应答; In-Out消息交换模式总是存在 SOAP请求和应答。
 
3)提供阻塞和非阻塞客户端  API
 
4)支持内置的  Web服务寻址  (WS-Addressing) 
 
5)灵活的数据绑定,可以选择直接使用  AXIOM,使用与原来的  Axis 相似的简单数据绑定方法,或使用  XMLBeans JiBX   JAXB 2.0 等专用数据绑定框架。
 
6)新的部署模型,支持热部署。
 
7)支持 HTTP SMTP JMS TCP传输协议。
 
8)支持 REST (Representational State Transfer)
 
6 Axis2 支持的规范包括:
-SOAP 1.1 and 1.2
-Message Transmission Optimization Mechanism (MTOM), XML Optimized Packaging (XOP) and SOAP with Attachments
-WSDL 1.1, including both SOAP and HTTP bindings
-WS-Addressing (submission and final)
-WS-Policy
-SAAJ 1.1
有关 Axis2更加详细的介绍,可以访问 Axis2网站 http://ws.apache.org/axis2
0
3
分享到:
评论

相关推荐

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    axis2发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这是一个强大的Java开发平台,支持多种开发任务,包括Web服务的开发和调试。 2. ...

    axis2客户端调用webService接口,精简jar包

    总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。

    axis2客户端调用webService的DEMO

    用AXIS2作为客户端调用webService的demo:亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    Axis2发布和调用webservice

    描述了axis2如何调用webservice,jar齐全,首先保证webservice的url能正常访问,下载资源后直接运 行com.axis2.test.TestAxis2的main方法即可。 axis2功能十分强大,可接受方法中返回任何类型,比如List, Set,...

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    java 通过axis调用天气预报的webservice

    标题中的“Java通过Axis调用天气预报的WebService”是指使用Java编程语言,通过Apache Axis库来访问和使用公开的天气预报Web服务。Apache Axis是一个开放源码的SOAP(简单对象访问协议)工具包,它允许开发者创建和...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的Web服务解决方案。 **Web服务**是一种在互联网上不同系统间交换数据的方式,它允许应用程序之间通过标准协议进行通信。Web服务通常使用...

    java客户端调用webservice所调用的axis1.4包和方法调用

    本方法是用axis1.4技术,实现java客户端调用webservice。已经可实现过可行的,如果不行可加我QQ号302633进行详细解析。

    Java动态调用webService,axis2动态调用webService

    本文将深入探讨如何使用Axis2来动态地调用Web Service,并通过分析`WebServiceInvoker.java`这个文件来理解其实现原理。 1. **Java动态调用Web Service**: 在Java中,动态调用Web Service主要涉及到JAX-WS(Java ...

    myeclipse8.5使用axis2插件开发webservice服务并调用

    本文将详细介绍如何利用MyEclipse 8.5集成开发环境及其内置的Axis2插件来构建WebService服务,并演示如何通过客户端调用这些服务。 #### 二、准备工作 首先,确保您的开发环境中已经安装了以下软件: 1. Java ...

    Axis2教程和java调用webservice的各种方法总结

    标题“Axis2教程和java调用webservice的各种方法总结”表明了本文档主要聚焦于两个核心内容:一是Axis2框架的使用教程,二是Java语言调用Web服务的不同方法的综合概述。 描述中的“Axis2教程”暗示了会详细讲解Axis...

    Android axis调用Webservice

    本文将详细介绍如何在Android应用中利用Axis2来调用Web Service。 **一、Android与Web Service交互基础** 1. **SOAP(Simple Object Access Protocol)**: 是一种轻量级的协议,用于交换结构化的和类型化的信息。...

    Axis2发布以及调用webservice具体实例

    本文将详细介绍如何使用 Apache Axis2 在 Tomcat 6.0 上发布 WebService 服务端,并实现客户端的调用。通过本教程,您将学会一种简单易行的方法来部署和调用 WebService。 #### 二、环境搭建 ##### 1. 下载并配置 ...

    axis2调用webservice接口jar包

    本文将详细介绍如何使用Axis2调用WebService接口,并基于提供的jar包"axis2-1.7.6"进行说明。 **一、Axis2简介** Axis2是Apache软件基金会开发的一个Web服务引擎,它基于SOAP(Simple Object Access Protocol)和WS...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    Java Axis 直接调用webservice 接口工具类

    Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;

Global site tag (gtag.js) - Google Analytics