`
volunteer521
  • 浏览: 205679 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】使用Axis简单快速创建Webservice

    博客分类:
  • Axis
阅读更多

  一.准备工作:

  1.  安装Axis。去官方网站http://ws.apache.org/axis/下载axis包,然后解压到任何一个目录。本例使用的是axis-bin-1_4.tar.gz ,解压到E:\axis-bin-1_4\axis-1_4。

  2.  开发环境准备。本例使用MyEclipse6.0 ,web server使用tomcat6。

 

  二.创建Web工程:

  1. MyEclipse中新建web工程,名称为TestCustomAxis。工程目录为:D:\JavaProject\TestCustomAxis。

  2. 引入axis包: 把axis目录下的E:\axis-bin-1_4\axis-1_4 \lib\下的所有jar包拷贝到工程下面的WebRoot\WEB-INF\lib下,MyEclipse会自动添加到引用库(Referenced Libraries):

 

  三.写接口和类代码:

  1.这里我想顺便测试一下Axis是否支持对复杂对象的串行化,于是自定义一个wsResult类(注意这个类一定要是标准写法,属性有get,set方法),代码如下:

  package com.ckp;

  public class wsResult {

  private int errorCode;

  private String errorString;

  private String resultVal;

  public wsResult(){

  this.errorCode = 0;

  this.errorString = "";

  this.resultVal = "";

  }

  public int getErrorCode() {

  return errorCode;

  }

  public void setErrorCode(int errorCode) {

  this.errorCode = errorCode;

  }

  public String getErrorString() {

  return errorString;

  }

  public void setErrorString(String errorString) {

  this.errorString = errorString;

  }

  public String getResultVal() {

  return resultVal;

  }

  public void setResultVal(String resultVal) {

  this.resultVal = resultVal;

  }

  }

 

  2.定义接口SayHelloService,所属包是com.ckp:

  package com.ckp;

  public interface SayHelloService {

  public String sayHelloMr(String name);

  public wsResult sayHelloMiss(String name);

  }

 

  3.创建实现类SayHelloImpl,实现接口SayHelloService:

  package com.ckp;

  public class SayHelloImpl implements SayHelloService{

  public String sayHelloMr(String name){

  return "Hello you,,,Mr."+name;

  }

  public wsResult sayHelloMiss(String name){

  wsResult retObj = new wsResult();

  retObj.setResultVal("Hello,Miss"+name);

  return retObj;

  }

  }

 

  工程结构如下图:

 

  四.配置Axis:

  1.修改web.xml文件,没什么特殊要求的话,可以直接把axis压缩包(E:\axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF\)里的web.xml拷贝过来覆盖工程的web.xml。

  2.书写deploy.wsdd,这是关键步骤。在任意位置创建文件deploy.wsdd(比如创建到E:\)。内容如下,具体配置见注释文字:

  <deployment

  xmlns="http://xml.apache.org/axis/wsdd/"

  xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <!-- Services from TestAxisService WSDL service -->

  <service name="TestAxisService" provider="java:RPC" style="wrapped" use="literal">   <!-- 服务名称,自己定义 -->

  <parameter name="wsdlTargetNamespace" value="http://ckp.com"/>                 <!-- 将显示在wsdl上的命名空间 ,自己定义-->

  <parameter name="wsdlServiceElement" value="ckpService"/>                      <!-- 将显示在wsdl中wsdl:service节点的 name属性, 自己定义-->

  <parameter name="schemaQualified" value="http://ckp.com"/>                  <!-- 自己定义-->

  <parameter name="wsdlServicePort" value="testCustomAxis"/>                  <!-- 将显示在wsdl中wsdl:port节点的 name属性, 自己定义 -->

  <parameter name="className" value="com.ckp.SayHelloImpl"/>                  <!-- 实现类名,要带上包名 -->

  <parameter name="wsdlPortType" value="SayHelloService"/>                       <!-- 接口名 -->

  <parameter name="typeMappingVersion" value="1.2"/>

  <!-- 下面就是对方法的描述了,要写对方法的名字,返回值类型和参数的名字和类型 -->

  <operation name="sayHelloMr" qname="operNS:sayHelloMr" xmlns:operNS="http://ckp.com" returnQName="retNS:out" xmlns:retNS="http://ckp.com" returnType="rtns:string" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >

  <parameter qname="pns:name" xmlns:pns="http://ckp.com" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>

  </operation>

  <operation name="sayHelloMiss" qname="operNS:sayHelloMiss" xmlns:operNS="http://ckp.com" returnQName="retNS:out" xmlns:retNS="http://ckp.com" returnType="rtns:wsResult" xmlns:rtns="http://ckp.com" soapAction="" >

  <parameter qname="pns:name" xmlns:pns="http://ckp.com" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>

  </operation>

  <parameter name="allowedMethods" value="sayHelloMr sayHelloMiss"/> <!-- value里面用空格隔开方法名 -->

  <!-- 串行化的关键就在下面这里了,对自定义类型wsResult的描述。。。注意type属性里要带上包名 -->

  <typeMapping

  xmlns:ns="http://ckp.com"

  qname="ns:wsResult"

  type="java:com.ckp.wsResult"

  serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

  deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

  encodingStyle=""

  />

  </service>

  </deployment>

  3.把web工程部署到tomcat,启动tomcat。

  4.生成server-config.wsdd文件,步骤如下:

  1)新建makeWsdd.bat,内容如下

  set Axis_Lib=E:\ axis-bin-1_4\axis-1_4\lib

  set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

  set Axis_Servlet=http://localhost:8080/TestCustomAxis/services/AdminService

  %Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% E: \deploy.wsdd

  写对axis包的路径和刚才手写的deploy.wsdd路径,以及webserver服务地址。

  2)命令行下,执行makeWsdd.bat:(注意此步骤进行时tomcat必需是启动状态):

  执行成功会显示如下信息:

  在apache-tomcat-6.0.14\webapps\TestCustomAxis\WEB-INF\下也会出现server-config.wsdd文件。

  5.重启tomcat。

  五.测试Webservice:

  1.先测试wsdl,浏览器输入:http://localhost:8080/TestCustomAxis/services

  点击TestAxisService的wsdl,查看wsdl文件,可以看到,自定义类型wsResult的串行化也成功了:

  2.测试服务是否正确执行:我们用Myeclipse自带的测试工具来测试:

  1)打开Myeclipse里的Web Services Explorer:

  2)弹出如下界面,选择右上角的WSDL Page :

  3)显示如下,地址栏输入我们的wsdl地址,点击 Go:

  4)显示如下,可以点击方法1或者方法2进入测试某个方法:

  5)点击方法1,进入如下界面,随便输入参数”奥巴马”,点击Go,下放显示结果Hello you,,,Mr.奥巴马 。

  6)点击方法2,进入如下界面,随便输入参数” 布兰妮”,点击Go,下放显示结果,可以看到自定义的wsResult类正确被串行化的结果:

  总结:与Xfire相比,用Axis写Webservice稍微复杂些,不过还是很简单地。建工程,写接口,写类,拷贝一个web.xml,写deploy.wsdd ,生成server-config.wsdd,万事ok!

  弄明白如何手工写wsdd文件的好处是,灵活性比较大,如果以后想对Webservice修改或者添加方法。直接修改server-config.wsdd文件即可(server-config.wsdd文件里有一段内容,与deploy.wsdd配置内容一样,照着修改即可)。

分享到:
评论

相关推荐

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

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    AXIS入门指南-webservice

    AXIS简化了WebService的开发流程,通过自动代码生成和部署工具,使得开发人员可以快速地实现服务接口。 ### 2. 简单介绍 **2.1 WebService介绍** WebService是一种基于标准的、平台无关的通信方式,通过SOAP消息在...

    利用Axis编写简单的WebService

    总结起来,本文详细介绍了如何使用Apache Axis来编写和部署一个简单的Java WebService,包括创建Java类、生成WSDL、部署服务以及编写客户端进行测试。熟悉这些步骤有助于开发者快速搭建和调试基于SOAP的Web服务。

    eclipse+tomcat+axis2创建webservice

    本文将介绍如何使用Eclipse集成开发环境、Apache Tomcat服务器和Apache Axis2框架来创建Web服务。Apache Axis2是Web服务的一个强大工具,它提供了更高效、更灵活的服务开发方式。 1. **Apache Axis2简介** Apache ...

    使用Axis+Eclipse开发webservice

    Axis 提供了一种方便快捷的方式来创建和使用 Web Service,使得开发者无需深入了解底层细节,就能快速构建 Web Service 应用。 总结一下,Web Service 是一种基于标准(如 SOAP、WSDL)的,用于不同系统间通信的...

    SpringBoot开发WebService之Axis示例

    Axis是Apache的Web服务工具包,它允许开发者使用Java创建和部署SOAP Web服务。SOAP(简单对象访问协议)是一种基于XML的协议,用于在分布式环境中交换结构化信息。Axis提供了从WSDL(Web服务描述语言)到Java代码的...

    axis2创建webservice操作手册.doc

    ### axis2创建webservice操作手册知识点详述 #### 1. 引言 ##### 1.1 目的 本文档旨在为初次接触WebService技术的开发者提供一份详细的操作指南,帮助他们了解WebService的基本原理以及如何使用Axis2框架来构建...

    Axis2 创建 webservice 操作手册

    通过骨架,你可以快速创建服务部署文件(.aar)。在命令行中,进入Axis2的bin目录,然后运行以下命令: ```bash java -jar axis2-*.jar create-service HelloWorldService HelloWorldService.java ``` 这将在当前...

    axis2创建webservice

    本文将深入探讨如何使用Axis2创建Web服务,以“axis2创建webservice简单demo”为主题,帮助开发者了解并实践这个过程。 首先,我们需要理解Web服务的基本概念。Web服务是一种通过网络(通常使用HTTP协议)进行通信...

    Axis实现webservice完整实例

    Axis 支持 SOAP 1.1 和 1.2,以及 WSDL 1.1 标准,允许开发者快速创建服务端和客户端代码。 ### 3. Axis 服务端实现 - **创建服务类**:首先,你需要定义一个 Java 类,这个类包含了你希望暴露给外部调用的方法。...

    axis2实现webservice

    - **优势**:使用Axis2可以快速构建稳定可靠的WebService,它提供了丰富的特性和工具支持,降低了开发难度。 - **应用场景**:适合于需要跨系统、跨语言进行通信的应用场景,如企业内部系统集成、与其他企业的系统...

    axis和xfire配置webService的源代码

    标题中的“axis”和“xfire”是两个不同的Java Web Service框架,它们允许开发者创建和消费Web服务。本文将深入探讨这两个框架以及如何配置它们来实现Web服务。 **Axis** Axis是Apache软件基金会的一个开源项目,...

    用axis2搭建webservice

    通过 Axis2,开发者可以快速地创建和部署Web服务,同时利用Spring的强大功能进行依赖注入和事务管理。 首先,让我们深入了解Axis2。Axis2是Axis1的升级版,它优化了性能,增加了模块化结构,使得扩展和定制更加灵活...

    Axis1 创建Webservice 服务端

    Axis1作为SOAP栈,能够帮助开发者快速地创建和使用Web服务。 **步骤1:安装和配置Axis1** 在开始之前,确保已经下载并安装了Axis1的发行版。将其解压到指定目录,例如`C:\axis1`。配置环境变量`AXIS_HOME`指向这个...

    axis发布webservice教程源代码

    Apache Axis是开源的Java库,它允许开发者在Java平台上快速地创建、部署和使用Web服务。 【描述】中的重复内容可能是在强调该教程的重要性,意味着它可能提供了深入且反复实践的指导,帮助学习者全面掌握Axis发布...

    AXIS1.4webservice服务端和客户端例子

    在这个"AXIS1.4 WebService服务端和客户端例子"中,我们将深入探讨如何使用AXIS1.4搭建服务端和客户端,以及如何进行远程调用。 首先,让我们从服务端开始。服务端是提供Web服务的系统,它可以接收客户端的请求并...

    Axis 下的 WebService例子

    1. **创建WebService** - **编写Java类**:首先,你需要编写一个Java类,这个类会暴露为Web服务。例如,我们可以创建一个名为`Calculator`的类,包含加法、减法等方法。 - **生成wsdl**:使用Axis提供的`wsdl2java...

    axis调用webservice实例,包含jar包

    标题中的“axis调用webservice实例”涉及到的是在Java开发中使用Apache Axis库来调用Web服务的过程。Apache Axis是一个开放源代码的SOAP栈,它允许开发者创建和部署Web服务,同时也提供了客户端工具来调用这些服务。...

Global site tag (gtag.js) - Google Analytics