`
fman
  • 浏览: 53697 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论
阅读更多
本文结合一个简单示例讲解了怎样把Axis和Ant结合起来进行Web服务的开发。帮助读者从简单的java源代码或者从一个服务描述文件(wsdl)开始,用Ant工具进行构建,设置,并把服务部署到Axis。

首先假定您熟悉 AXIS 处理系统和Ant工具。文中示例所需要的软件如下:
1. Apache Axis 1.1
2. Apache Ant 1.5.3
3. Jarkat Tomcat 4.1.24

在开始前,假定上述软件已经安装和配置好了。

Axis和Ant简介

Axis 框架是来自 Apache Group 的、基于 java 的、最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。其本质上是一个SOAP引擎--一个构建诸如客户端、服务器、网关等SOAP处理器的框架。是Apache SOAP的后继项目。但是,Axis使用SAX(基于事件)解析器获得了比Apache SOAP早期版本(使用DOM解析)非常明显的速度优势。另外,它还具有很强的灵活性和稳定性,支持Web服务描述语言1.1版。

Apache Ant是Apache软件基金会jakarta项目中的一个子项目,是一个基于Java的构建工具,类似于make,但它没有make那么复杂繁琐。Ant由一些内置任务(task)和可选择的任务组成,还可以配置第三方提供的任务。它的构建配置文件基于XML的,所以容易书写和维护,而且结构清晰。Ant还可以集成到一些开发环境中(例如visual age,jbuilder,Elipse)。


Axis对Ant的支持

Axis为支持Ant构建,提供了一个axis-ant.jar文件。该文件包含三个可选任务(task)的定义和实现:axis-wsdl2java,axis-java2wsdl和axis-admin。任务axis-wsdl2java与Axis提供的工具WSDL2Java具有同样的功能,根据web服务描述文件生成对应的Java源程序,它的属性设置与WSDL2Java的命令参数设置类似。而任务axis-java2wsdl则相反,它与Java2WSDL工具一样,是根据已有的类文件来生成Web服务描述文件。最后一个任务axis-admin是用于web服务的部署和取消部署的,对应于Axis的AminClient工具。

为了使Ant能够正确使用上述三个任务(task),还需要做一些配置。注意:Apache Ant的版本必须是1.5.1或更高版本。

1.设置系统的环境变量CLASSPATH包含Axis提供的axis-ant.jar文件,或者在Ant的配置文件(通常是build.xml)中设置路径包含它。例如,

    <path id="axis.classpath">

      <fileset dir="${axis.home}/lib">

               <include name="**/*.jar" />

      </fileset>

    </path>

   

2.然后使用<taskdef>声明导入axis-ant.jar文件中的属性文件所定义的任务(task)列表。

    <taskdef resource="axis-tasks.properties"

  classpathref="axis.classpath" />

     3.设置在构建过程中可能要需要的java包,例如, Axis所有的jar包,wsdl4j.jar,junit.jar等等。

 

实例开发

下面就用一个实例来讲解怎样把Ant和Axis结合来开发Web服务。为了注重本文的目的,我们开发一个比较简单的Web服务,它接受客户端传入的字符串数组,如果传入的参数为null,则抛出一个自定义的异常,否则把每个字符串连接起来返回给客户端。

首先定义一个Web服务接口Hello,如下所示:

 

  package com.bidlink.hello;

  public interface Hello{

     public String echo(String[] content ) throws                      

               java.rmi.RemoteException,com.bidlink.hello.MyException;

  }

 

  自定义异常MyException包含一个时间值,以记录异常出现的时间,如下:

 

  package com.bidlink.hello;

public class MyException extends org.apache.axis.AxisFault implements java.io.Serializable{

    private java.util.Calendar occurTime;

   

    public MyException() {

    }



    public MyException(

           java.util.Calendar occurTime) {

        super();

        this.occurTime = occurTime;

    }



    public java.util.Calendar getOccurTime() {

        return occurTime;

    }



    public void setOccurTime(java.util.Calendar occurTime) {

        this.occurTime = occurTime;

    }           

}



1.axis-java2wsdl:从类文件生成服务描述文件

编译上面定义的两个文件Hell.java和MyException.java。接着编写Ant的配置文件build.xml(文件详细信息请查看示例源代码),使用axis-java2wsdl任务根据类Hello来生成Web服务描述文件hello.wsdl。任务具体配置如下:

    <axis-java2wsdl classname="com.bidlink.hello.Hello"

                        location="http://localhost:8080/axis/services/Hello"

                        namespace="http://hello.bidlink.com"

                        output="hello.wsdl"

                        style="RPC"

                        extraclasses="com.bidlink.hello.MyException">

         <classpath>

             <pathelement path="${dist}"/>

         </classpath>

        </axis-java2wsdl>

       

其中,<pathelement path="${dist}"/>指出Hello.class和MyException.class文件的位置。

运行命令ant java2wsdl,构建出Web服务描述文件hello.wsdl。

2.axis-wsdkl2java:从服务描述文件生成服务源程序

下面讲解怎样根据刚刚得到的hello.wsdl文件生成服务所需要的java源程序。在这里需要用到任务axis-wsdl2java。任务属性设置如下:

     <axis-wsdl2java all="true"

                     url="hello.wsdl"

                     deployscope="Request"

                     output="${gensrc}"

                     serverside="true"

                     skeletondeploy="false"

                     testcase="true"

                     noimports="false"

                     typemappingversion="1.2">

       

        </axis-wsdl2java>

      运行ant wsdl2java,根据axis-wsdl2java任务的属性配置生成相应的java源程序,本例所生成的文件包括:服务端服务接口文件Hello.java及其实现HelloSoapBindingImpl.java,以及客户端的HelloService.java,HelloServiceLocator.java,HelloServiceLocator.java和客户端存根文件HelloSoapBindingStub.java。又因为属性testcase="true",所以还生成了测试文件HelloServiceTestCase.java。当然,自定义异常MyException也是重新生成的。

3.axis-admin:向Axis部署Hello服务

服务源程序生成后,需要根据服务的功能修改HelloSoapBindingImpl.java文件,以真正实现该Web服务。修改如下:

  /**

* HelloSoapBindingImpl.java

*

* This file was auto-generated from WSDL

* by the Apache Axis WSDL2Java emitter.

*/



package com.bidlink.hello;



public class HelloSoapBindingImpl implements com.bidlink.hello.Hello{

    public java.lang.String echo(java.lang.String[] in0) throws java.rmi.RemoteException, com.bidlink.hello.MyException {

        if(in0 == null)

           throw new MyException(java.util.Calendar.getInstance());

          

       

        String retStr = "";

        for(int i=0; i< in0.length; i++)

           retStr += in0[i];

        return retStr;

    }



}

   

编译所有的生成的源程序,最后使用axis-admin任务向Axis部署Hello Web服务。

    <axis-admin

           port="${target.port}"

               hostname="${target.server}"

            failonerror="true"

            servletpath="${target.appname}/services/AdminService"

            debug="true"

            xmlfile="deploy.wsdd"/>

       运行ant deploy,部署Hello服务。

    测试

现在可以测试所部署的Web服务hello。可以通过浏览器,也可以利用刚才生成的测试文件HelloServiceTestCase.java来进行该项工作。如果利用测试文件HelloServiceTestCase.java,那么还需要对它进行稍作修改。具体来说,就是添加一个main函数,然后修改所生成的测试方法。

  

参考资料

1.阅读Apache Axis开发指导文档

2.查看Apache Ant文档手册http://ant.apache.org/manual/index.html

3.http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages/AxisAntTasks得到更多关于Axis-Ant任务的信息。
分享到:
评论

相关推荐

    axis应用jar包

    axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中...

    AXIS Web Service入门及应用

    3. 第一个Service:文件"axis应用1-安装及第一个Service.doc"很可能是关于创建和部署第一个AXIS Web服务的指南,包括安装AXIS、创建简单的服务接口和实现,以及部署服务的步骤。 四、进阶应用 1. 异常处理:AXIS...

    Axis1.3技术文档

    这一过程展示了 Axis 1.3 在实际项目中的应用方式,帮助开发者快速理解如何利用 Axis 构建 SOAP 服务。随着实践的深入,开发者可以进一步探索 Axis 的高级特性,如安全性、事务处理等,从而更好地满足企业级应用的...

    应用axis实现WebService.pdf

    - 配置Tomcat的Axis应用,将新生成的服务部署到服务器上。 - 使用生成的客户端代码在非Java环境中调用服务,测试服务的有效性。 总结,Apache Axis提供了一个强大的框架,简化了Java开发人员构建和部署Web服务的...

    axis1.4开发需要用到的jar包

    它允许 Axis 应用程序根据需要选择不同的日志实现,如 Log4j 或 JDK 内置的日志。 5. **commons-discovery-0.2.jar**:Apache Commons Discovery 提供了发现服务和组件的能力,例如查找 Web 服务。它支持 JMX(Java...

    axis2教程 axis2应用方法

    - **应用场景**:Axis2广泛应用于各种集成场景中,例如: - 发布服务端Java类的方法,以便于跨平台、跨语言的客户端访问。 - 在面向服务的架构(SOA)中作为服务间通信的基础组件。 - 作为企业级应用的集成方案之一...

    Webservice架构,基于axis

    将Axis目录下的webapps文件夹复制到Tomcat的webapps目录下,以完成Axis应用的部署。 #### 应用测试与验证 启动Tomcat后,可以通过浏览器访问`http://localhost:8080/axis/`,进入Axis的欢迎页面,该页面提供了多种...

    axis1.3官网web应用

    标题“axis1.3官网web应用”表明这是一个与Axis1.3版本相关的Web应用程序,可能是指使用Axis1.3构建的示例或教程项目。由于“apache官网已经不提供下载了”,这暗示Axis1.3可能是一个较旧的版本,不再得到官方支持,...

    Axis + tomcate

    2. **配置Tomcat**: 将Axis的`WEB-INF`目录下的所有内容复制到Tomcat的`webapps/axis`目录下,或者如果Tomcat中没有预设的Axis应用,可以将其复制到`webapps`目录下的任意位置,并重命名为你希望的应用名。...

    Axis WebService开发

    将相应jar包(如Activation.jar、mail.jar、xmlsec-1.2.1.jar、xalan.jar)放置于Axis应用的WEB-INF/lib目录下,确保所有必需组件均已正确安装。 ##### 2.3 开发自定义WebService 完成环境搭建后,即可着手创建...

    axis-bin-1-4.rar

    4. 部署服务到Axis应用服务器。 5. 生成客户端 stubs,以便于其他系统调用该Web服务。 总结来说,"axis-bin-1-4.rar"是一个用于Java Web服务开发的开源工具包,它提供了完整的开发环境,包括所需的库文件、配置文件...

    Axis1,Axis2,Xfire,CXF区别

    Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种新一代的 WebService 平台,它...

    Axis_API和axis2_API

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis和Axis2是两种流行的Java SOAP(简单对象访问协议)框架,用于构建和消费Web服务。本文将深入探讨这两个API,以及它们在Web服务开发中的作用。 ...

    MyEclipse下开发Web Service(Axis)

    3. **AxisWar包**:包含了一个已经打包好的Axis应用,可以直接部署到Web服务器上。 4. **Apache Tomcat**:作为Web容器,用于部署Web应用程序。 5. **Axis2 Eclipse插件**:提供了代码生成和打包工具,方便开发者...

    axis1.4和axis2相关jar文件

    在Java世界中,Apache Axis是用于构建Web服务和客户端应用程序的工具包,它允许开发者将Java类暴露为Web服务,并且能够消费其他Web服务。Axis分为两个主要版本:Axis1和Axis2,这两个版本在功能、性能和设计上都有所...

    axis 1.x与axis2.x开发

    Axis1.x是较早的版本,它在Web服务领域有着广泛的应用。Axis1.x基于Servlet API,提供了SOAP消息处理和WSDL(Web Services Description Language)生成的功能。它的优点在于简单易用,对于初学者来说,快速搭建Web...

    Axis实践之Axis入门

    `docBase`属性指定了Axis的Web应用目录,确保根据你的实际路径进行修改。 **第五部分:启动Tomcat** 1. **启动Tomcat**:导航到Tomcat安装目录的bin文件夹,双击startup.bat启动Tomcat。启动过程中,控制台会显示...

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    `axis2-1.5.1-war.zip`是Axis2作为Web应用的WAR(Web Archive)文件形式,适用于直接部署到支持Servlet容器(如Tomcat、Jetty)中。它包含了Axis2框架的全部功能,并且可以与其它Web应用共存。WAR文件的结构与标准的...

    将应用部署在weblogic中于axis2冲突的问题及解决方案

    "将应用部署在Weblogic中与Axis2冲突的问题及解决方案" 问题描述 在将应用部署到Weblogic Server 10.3时,出现了一个错误,抛出ClassCastException异常,具体错误信息为: `java.lang.ClassCastException: ...

    axis和axis2的一些发布差异(WSDL2Java) 收藏

    尽管两者都提供了类似的功能,但在实际应用中还是存在一些重要的区别。 #### Axis与Axis2 WSDL2Java工具的基本用法 1. **Axis WSDL2Java工具命令行格式**: - `wsdl2java` 是Axis用于根据WSDL文件生成Java源代码的...

Global site tag (gtag.js) - Google Analytics