`
sineat
  • 浏览: 20633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

AXIS入门实例

阅读更多

开发环境,windows2000、Eclipse3.0、Tomcat5.0、JDK1.4。
    以下关于Axis的应用是在在基于上面所有环境已安装及配置成功的前提下。
1、下载axis软件包,在此使用的是axis1.4版本,下载地址为:
http://www.apache.org/dyn/closer.cgi/ws/axis/1_4
2、安装测试
    解压缩软件包,如axis-bin-1_4.zip,即可得到axis的应用文档及开发包。将
...\axis-bin-1_4\axis-1_4\webapps\ 下的WEB应用axis目录置于Tomcat相应用目录,如
…\Tomcat 5.0\webapps。启动tomcat服务,打开页面: http://127.0.0.1:8080/axis/,如果看到以下页面出来,测试成功。反之,请检查环境配置。

 

 3、axis初步应用
    下载另外两个开发应用包,activation.jar和mail.jar。
接下来就是如何利用开发包进行服务的发布,关于服务的发布有即时发布和定制发布,以下分别举例说明。
3.1 即时发布
    在eclipse中新建java或tomcat项目(配置过lomboz插件),引入外部库文件,即:axis-bin-1_4\axis-1_4\lib下所有jar包,再引入activation.jar和mail.jar,这样环境即搭建好了,新建一个JWS文件,如GetHexString.jws。内容如下:
public class GetHexString {
 public static String getHexString(String str){
  if ((str==null)||(str=="")) return null;
  byte strBytes[]=str.getBytes();
  int index=0;
  int len=strBytes.length;
  return (byteToHexstring(strBytes,0,len));
 }
 /** 十六进制字节的相应的字符串** */
 public static String byteToHexstring(byte[] sb,int index,int len) {
  char hexDigit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'A', 'B', 'C', 'D', 'E', 'F' };
  String result="";
  //char[] array={0x30,0x30}; ;
  for (int i=index;i    char[] array = { hexDigit[(sb[i] >> 4) & 0x0f], hexDigit[sb[i] &

0x0f] };
   result+=new String(array)+" ";
  }  
  return result;
 } 
}
    将GetHexString.jws 复制到…\Tomcat 5.0\webapps\axis下,重启Tomcat服务,打开页面
http://127.0.0.1:8080/axis/GetHexString.jws?wsdl
    得到描述代码如下
<wsdl:service name="GetHexStringService"><?xml version="1.0" encoding="UTF-8" ?>
……
<wsdl:service name="GetHexStringService">
 <wsdl:port binding="impl:GetHexStringSoapBinding" name="GetHexString">
  <wsdlsoap:address location="http://127.0.0.1:8080/axis/GetHexString.jws" />
  </wsdl:port>
  </wsdl:service>
……
</wsdl:definitions></wsdl:service>

3.2 定制发布
3.2.1创建服务程序,即新建一个java类,内容如下:
public class FixedString {
 public static String fixedLen(String para, int len) {
  String result = "" + para;
  int n = len - result.length();
  for (int i = 0; i < n; i++) {
   result = "0" + result;
  }
  return result;
 }
}
    将编译后的class类放在…\Tomcat 5.0\webapps\axis\WEB-INF\classes\samples下。
3.2.2 编写wsdd(服务发布描述文件deploy.wsdd(Web Service Deployment Descriptor的缩写),这个文件负责描述服务的名称、入口等信息,服务描述内容如下:
 <service name="FixedString" provider="java:RPC" use="encoded" type=""></service>
   <service name="FixedString" type="" provider="java:RPC" style="rpc" use="encoded">
        <parameter name="scope" value="Request"/>
        <parameter name="className" value="samples.FixedString"/>
        <parameter name="allowedMethods" value="*"/>
        <namespace>http://test1.sineat.www</namespace>
        <typeMapping
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            qname="ns1:ArrayOfint" languageSpecificType="java:int[]"
            serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
            deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
            name="ArrayOfint" xmlns:ns1="http://test1.sineat.www"/>
    </service>      
      
     “java:RPC”: 服务的提供者,内建在Axis中,指明了一个JAVA RPC服务,处理的类是               org.apache.axis.providers.java.RPCProvider;
        "samples.FixedString":远程所用到的服务类,包路径及类名的全称;
http://test1.sineat.www:客户端程序产生在test1.sineat.www下。
        将以上服务内容取代原server-config.wsdd中相应内容,server-config.wsdd全文参见附录说明。文件位于…\Tomcat 5.0\webapps\axis\WEB-INF下。
测试页面地址:http://127.0.0.1:8080/axis/services/FixedString?wsdl
3.2.3 客户端程序开发:
    运行程序
    main类设为:org.apache.axis.wsdl.WSDL2Java;
    自变量参数:http://127.0.0.1:8080/axis/services/FixedString?wsdl
    在项目为将产生以下4个类,结构图如下。
 <v:shapetype id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" o:extrusionok="f" gradientshapeok="t"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
    假设服务程序类名为xxx,则相应的4个类为xxx..java、xxxService、xxxServiceLocator和xxxSoapBindingStub。
    调用服务的方法
    新建类,如TestService,内容如下:
public class TestService {
 public static void main(String[] args) throws Exception {
  FixedStringService ssc = new FixedStringServiceLocator();
  try {
   FixedString fs = ssc.getFixedString();
   String str = fs.fixedLen("abc", 10);
   System.err.println("str=" + str);
  } catch (ServiceException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
 }
}
    运行程序如果:str=0000000abc
4、服务的get方式访问
写一jws文件,内容如下。
public class PrintDemo{
    public String print() {
  System.out.println("Webservice display testing by Zhao.Jian");
//在服务器端打印输出
  return "Webservice display testing by Zhao.Jian!";//返回相应字符串
 }

    将文件置于…\Tomcat 5.0\webapps\axis 目录下,访问页面:
http://127.0.0.1:8080/axis/PrintDemo.jws?method=print 
    返回的SOAP信封消息为:<soapenv:envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soapenv:body> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<printResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <printReturn xsi:type="xsd:string">Webservice display testing by Zhao.Jian!</printReturn>
  </printResponse>
  </soapenv:Body>
  </soapenv:Envelope>
</soapenv:body></soapenv:envelope>5、客户端的服务访问编程
    关于Axis实现SOAP的API请参阅…\axis-bin-1_4\axis-1_4\docs\index.html。
org.apache.axis.client.Call和org.apache.axis.client.Service是两个比较常用的类,一般的客户端程序要访问一个Web Service时,都要生成一个客户端的Service对象和Call对象,在访问服务之前,首先要对Call对象设置相应的参数,包括服务的位置、操作名、入口参数、返回值类型等,最后调用Call对象的invoke方法访问服务。
以下是一个客户端访问服务的程序实例,包括2种发布方式的服务调用的实现方法。
文件AxisAccess.java原文。
package test.sineat.www;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
public class AxisAccess {
 public static void main(String[] args) throws Exception {
  //创建service和call对象,标准的JAX-RPC对象,用于存储服务调用的数据(metadata)。
  Service service = new Service();
  Call call = (Call) service.createCall();//访问即时发布的Distance服务
  call.setTargetEndpointAddress("http://127.0.0.1:8080/axis/GetHexString.jws");//设置访问点
  call.setOperationName("getHexString");//设置操作名
  call.addParameter("op1", XMLType.XSD_STRING, ParameterMode.IN);//设置入口参数:字符型,入口
  //设置返回参数类型
  call.setReturnType(XMLType.XSD_STRING);//返回类型:字符
  String para1 = "123abc";
  //调用服务,在invoke方法中传入的是包含调用参数的数组
  System.out.println("字符串:" + para1 + "对应的字节="
    + call.invoke(new Object[] { para1 }) + " !");
  call = (Call) service.createCall();//访问定制发布的FixedString服务
call.setTargetEndpointAddress("http://127.0.0.1:8080/axis/services/FixedString");//设置访问点
call.setOperationName("fixedLen");//设置操作名
 call.addParameter("op1", XMLType.XSD_STRING, ParameterMode.IN);//设置入口参数:字符型,入口
 call.addParameter("op2", XMLType.XSD_INT, ParameterMode.IN);//添加入口参数: 
   // 整型,入口
  call.setReturnType(XMLType.XSD_STRING);//返回类型 字符
  para1 = "123";
  Integer para2 = new Integer(10);
  //调用服务
  System.out.println("字符串:" + para2 + "经处理后= "
    + call.invoke(new Object[] { para1, para2 }));
 }
}

运行结果:
字符串:123abc对应的字节=31 32 33 61 62 63  !
字符串:10经处理后= 0000000123

特殊说明:为了正常显示效果,XML文件中'<' 由'<'代替,'?'由'?'代替。

分享到:
评论

相关推荐

    axis2入门实例

    **标题:“Axis2入门实例”** 在IT领域,特别是Web服务开发中,Apache Axis2是一个广泛应用的SOAP(简单对象访问协议)服务器和客户端框架。它提供了高性能、灵活且可扩展的环境来创建和部署Web服务。这篇教程将带...

    Axis WebService 实例源码

    【描述】中提到的"Tomcat+Axis+WebService 入门实例"旨在帮助初学者掌握如何利用这些组件进行通信。首先,Tomcat是一个流行的、开源的Java Servlet容器,它支持Servlet和JSP规范,是部署Web服务的理想选择。接下来,...

    Apache Web Services Axis2(1.4.1) 详细经典入门实例图文并茂

    本文将深入探讨Axis2 1.4.1版本的经典入门实例,通过Eclipse集成开发环境中的Axis2插件,帮助你快速理解和应用这一强大的Web服务工具。 一、Apache Axis2概述 Apache Axis2是Apache SOAP(Simple Object Access ...

    axis入门中文文档

    【Axis入门中文文档】是针对Web Service开发的一款关键工具,主要使用了Axis框架,该框架是Apache软件基金会下的一个开源项目,专门用于构建和部署基于SOAP(Simple Object Access Protocol)的Web服务。本文将深入...

    axis2 WebService 开发指南(中文版).docx

    2. ** Axis入门实例**: - 创建一个新的Java类,例如`HelloWorldService`,包含Web服务的方法,如`sayHello`和`getAge`。 - `sayHello`方法接收一个名字并返回带有问候的字符串,而`getAge`方法接受一个整数并返回...

    SOAP与AXIS2入门教程附带实例

    本入门教程将帮助你理解如何使用AXIS2来创建、发布和调用SOAP Web服务。首先,你需要了解AXIS2的架构,它主要由以下几个部分组成: 1. **Service Archive (AAR)**:这是AXIS2中服务的打包格式,类似于Java的JAR文件...

    WebService入门简单实例(采用AXIS的方式)

    WebService入门简单实例(采用AXIS的方式) WebService是一种基于XML的开放标准,用于在不同系统间交换数据和服务。它允许不同的应用程序、操作系统甚至编程语言之间进行互操作,通过HTTP协议进行通信,实现分布式...

    axis入门到深入及完全部署手册

    axis使得webservice相当简单,半天就可以精通

    AXIS2入门+进阶+webservice实例

    本资料集合包括了“AXIS2入门”、“AXIS2进阶”以及一个具体的“WebService实例”,旨在帮助初学者和有经验的开发者深入理解AXIS2及其在Web服务中的应用。 入门篇可能涵盖了以下内容: 1. **AXIS2基础概念**:介绍...

    axis调用webservice实例,包含jar包

    总的来说,这个压缩包为Java开发者提供了一种快速入门的途径,他们可以通过这个实例学习如何使用Apache Axis来调用Web服务,了解如何配置和使用必要的jar包,以及如何编写代码来与Web服务进行交互。这将有助于开发者...

    Axis2实用教程(入门教程包含实例)

    【Axis2实用教程入门概述】 Axis2是Apache软件基金会开发的一款强大的WebService引擎,它在WebService技术领域具有广泛的应用。作为一款先进的服务发布和消费平台,Axis2提供了丰富的功能,包括支持SOAP1.1和SOAP...

    Axis2 入门

    这个简明教程将引导你入门Axis2的使用。 首先,我们创建一个名为`StockQuoteService`的Java类,它包含了获取股票价格(`getPrice`)和更新股票价格(`update`)的方法。这里的`StockQuoteService`是一个简单的POJO...

    Axis_API实例教程打包

    2. Axis入门:介绍如何安装和设置Axis环境,以及创建第一个Web服务的步骤。 3. WSDL编写:教授如何手动或使用工具生成WSDL文件,以描述Web服务的接口和绑定。 4. SOAP消息结构:深入解析SOAP消息的构成,包括Header...

    Axis2包括axis2入门文档,新手教程,Myeclipse下的安装

    4. **示例**:压缩包中的实例可能包含创建一个简单的Axis2服务的完整流程,从编写服务接口和实现,到生成WSDL,再到部署服务。这些示例可以帮助理解Axis2的工作原理,同时也展示了如何在MyEclipse中调试和测试Web...

    axis2的war包、项目实例

    - `README.txt`:通常提供了简要的安装指南和快速入门步骤,对于初次接触Axis2的人来说非常有价值。 - `NOTICE.txt`:列举了Axis2所使用的第三方库及其许可信息,确保遵循所有相关的版权规定。 总的来说,Axis2的...

    axis2开发Web Services入门

    ### Axis2 开发 Web Services 入门 #### 知识点概述 本文旨在介绍如何使用 Axis2 开发 Web Services 的全过程,包括环境搭建、插件安装等基础准备工作,以及具体的开发流程与实例演示。 #### 1. 环境搭建 ##### ...

    Axis-Webservice入门

    标题中的“Axis-Web服务入门”指的是学习使用Apache Axis2框架来开发和部署Web服务的过程。Apache Axis2是Java世界中一个广泛使用的Web服务引擎,它提供了强大的功能,包括SOAP消息处理、WS-*协议支持以及模块化架构...

    axis web service的教程,入门到精通

    二、Axis入门 1. 安装与配置:首先,你需要下载并安装Axis,这通常是一个包含所有必要组件的JAR文件集合。配置Axis通常涉及到将其添加到你的Java项目类路径中。 2. 创建服务:使用Axis,你可以通过Java类快速创建...

Global site tag (gtag.js) - Google Analytics