设为首页 加入收藏

TOP

结合Axis和Ant开发Web服务
2011-06-09 13:16:20 来源: 作者: 【 】 浏览:1058次 评论:0

本文结合一个简单示例讲解了怎样把AxisAnt结合起来进行Web服务开发。帮助读者从简单的java源代码或者从一个服务描述文件(wsdl)开始,用Ant工具进行构建,设置,并把服务部署到Axis

 

首先假定您熟悉Axis处理系统和Ant工具。文中示例所需要的软件如下:

l         Apache Axis 1.1

l         Apache Ant 1.5.3

l         Jarkat Tomcat 4.1.24

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

 

AxisAnt简介

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

 

AxisAnt的支持

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

为了使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.jarjunit.jar等等。

 

实例开发

下面就用一个实例来讲解怎样把AntAxis结合开发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;

    }           

}

 

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

编译上面定义的两个文件Hell.javaMyException.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.classMyException.class文件的位置。

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

2Axis-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.javaHelloServiceLocator.javaHelloServiceLocator.java和客户端存根文件HelloSoapBindingStub.java。又因为属性testcase="true",所以还生成了测试文件HelloServiceTestCase.java。当然,自定义异常MyException也是重新生成的。

3Axis-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());

          


<
您看到此篇文章时的感受是:
Tags: 责任编辑:administrator
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇没有了 下一篇慎用或尽量不要用微软自带的sqlse..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位