`
DAOException
  • 浏览: 122227 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

axis学习小记(一)

阅读更多

      webservice何许人也?webservice是企业发布的完成特定功能的在线服务。通过HTTP协议传输可以轻轻松松的实现分布式的服务调用。分布式在线服务也是web的一个发展方向。而axis是目前较为主流的webservice引擎。他来源于apache的soap协议的一个实现。我们今天来利用axis实现一个简单的分布式调用。

      首先我们需要下载axis组件。其官方主页的地址是:http://www.apache.org/dyn/closer.cgi/ws/axis/1_4

      我们将下载后的压缩包文件,解压到本地硬盘当中。接着将目录当中的webapps目录下的axis文件拷贝到tomcat的目录下(笔者使用的是tomcat6.0)。启动tomcat,在浏览器地址栏当中输入:http://localhost:8080/axis/我们可以看到如下页面:

      点击Validation就可以看见webservice部署成功了

      下面就要开始我们的axis之旅了。axis提供了两种发布的方式:即时发布(jws)和定制发布(wsdd)

      这里即时发布不支持带包的类,但是大部分情况下发布的都是带包的类。所以这里我们就不介绍即时发布了,我们来说一说定制发布吧。

      定制发布相对于即时发布稍微有点复杂。但是其灵活性也更加的强大一些。定制发布需要完成三个步骤:

      第一步:创建服务器类:我们这里创建一个WsddServer的服务器类

package com.foolfish.wsdd;

/**
 * @email foolfish.chen@gmail.com
 * @author Administrator
 */
public class WsddServer {
    public WsddServer(){}

    public String say(String name){
    return "Hello" + name;
    }
}

     该类提供了一个say方法。用于接受参数并返回操作结果。接着我们需要针对该类编写一个wsdd文件。我们把这个wsdd命名为deploy.wsdd。该文件的描述如下所示

<?xml version="1.0" encoding="UTF-8"?>
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="firstWsdd" provider="java:RPC">
      <parameter name="className" value="com.foolfish.wsdd.WsddServer"/>
     <parameter name="allowedMethods" value="*"/>
     <parameter name="scope" value="request"/>

</service>

</deployment>

      我们来看一下这个xml文件,该文件的核心部分是

 

<service name="firstWsdd" provider="java:RPC">
      <parameter name="className" value="com.foolfish.wsdd.WsddServer"/>
     <parameter name="allowedMethods" value="*"/>
     <parameter name="scope" value="request"/>

</service>

      我们可以看出,我们给我们需要发布的服务器断的wenservice命名为firstwsdd.并在指定了其class的所在位置、允许被调用的方法以及可被调用的范围。我们需要将deploy.wsdd文件放置到tomcat下axis目录的WEB-INF目录下。接着,运行dos窗口,切换到该目录下运行

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd

     需要注意的是在运行上面命令的时候我们需要启动tomcat,不然无法进行编译,编译后,会生成新的文件server-config.wsdd。

      好了,我们接着就要开始写我们的客户端程序了,我们将创建一个名为WsddClient 的客户端程序。我们客户端将要调用服务器端的say方法。并输出结果。服务器端的代码如下图所示:

package com.foolfish.wsdd;

import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/**
 * @email foolfish.chen@gmail.com
 * @author Administrator
 */
public class WsddClient {
       public static void main(String[] args) {
        String url = "http://localhost:8080/axis/services/firstWsdd";
        try{
             Service serv = new Service();
             Call call = (Call) serv.createCall();
             call.setTargetEndpointAddress(url);
             call.setOperationName(new QName(url,"say"));

             String result = (String)call.invoke(new Object[]{"foolfish"});
             System.out.println("result = "+ result);
        }
        catch(ServiceException e){
            e.printStackTrace();
        }
        catch(RemoteException e){
            e.printStackTrace();
        }

    }
}

 

     上面的代码看起来应该很容易理解,客户端通过路径访问到服务器,接着通过我们发布的wsdd查找需要调用类,并获得该类的方法,执行并返回结果。我们运行上面的程序,将会返回result = Hellofoolfish字符串。

      怎么样,我们很简单的实现了一个简单的分布式调用了吧。我们现在来考虑一个问题,如果这个时候我们需要在调用服务器端的类的前后需要执行相应的操作。例如我们需要统计该webservice一共被调用几次。我们不方面在需要调用的类当中去写,这里我们就用到了axis的一个叫做handler的东西,利用handler我们可以在客户端调用服务器端之前或者之后执行相应的handler。

      这里我们来编写一个handler。取名为WsddServerHandler,用来统计对我们上面制作的webservice的调用次数。

package com.foolfish.wsdd;

import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

/**
 * @email foolfish.chen@gmail.com
 * @author Administrator
 */
public class WsddServerHandler extends  BasicHandler{
    private  static long count = 0L;
    private int requestCount = 0;
    //定义一个handler。用于统计某个webservice的调用次数
    public void invoke(MessageContext  args0) throws AxisFault {
        requestCount++;
        count++;
        String status = (String)this.getOption("status");
        System.out.println("The firstHandler status is: " +status +  " count : " + " handlerrequest: " + requestCount);
    }
}

 我们定义好了一个handler。下面我们需要在deploy.wsdd当中去配置,我们来看一下新的deploy.wsdd

<?xml version="1.0" encoding="UTF-8"?>
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler name="fisrtHandler" type="java:com.foolfish.wsdd.WsddServerHandler" >
<parameter name="status" value="success" />
</handler>
<service name="firstWsdd" provider="java:RPC">
    <requestFlow>
        <handler type="fisrtHandler" />
    </requestFlow>
    <parameter name="className" value="com.foolfish.wsdd.WsddServer"/>
     <parameter name="allowedMethods" value="*"/>
     <parameter name="scope" value="request"/>

</service>

</deployment>

 

      我们很容易的看出,我们定义了在调用我们先前定义的webservice的时候需要执行改handler,以便统计调用该handler的次数。

        好吧,我们现在来运行下客户端程序。客户端仍然输出没有handler时候的的字符。我们来看下服务器端输出了什么


     好了,我们的第一个axis完成了。效果还不错吧

    ^_^~~~~~~~

分享到:
评论

相关推荐

    AXIS学习

    AXIS学习及配置解析 AXIS是一个开源的Java框架,主要用于构建和部署Web服务。它在Web服务领域扮演着重要角色,特别是在Java生态系统中。AXIS允许开发者将现有的Java类转化为符合SOAP(简单对象访问协议)标准的Web...

    axis2学习资料

    Axis2是Apache软件基金会开发的一款基于Java的Web服务框架,它是Apache SOAP(Simple Object Access Protocol)项目的下一代产品,专门用于构建高性能、可扩展的Web服务。这个“axis2学习资料”压缩包很可能是包含了...

    Axis2学习文档

    Axis2是Apache软件基金会开发的一款基于Java的Web服务框架,它是Apache SOAP(Simple Object Access Protocol...通过深入学习和实践,你将成为一个熟练的Axis2开发者,能够在企业级项目中游刃有余地处理Web服务的挑战。

    axis学习攻略

    axis学习攻略,包含插件安装,文档学习,例子(2个项目架包一样,有一个例子的架包没加,加上就超出50MB了),保证能学好!axis2-1.4.1-bin.rar--axis2-1.4.1-war.rar 官网下

    axis学习资料集合

    Axis是Apache软件基金会开发的一款开源工具,主要用于创建和部署Java Web服务。它是基于SOAP协议的,使得Java开发者能够轻松地将普通Java类转换为Web服务。在这个“axis学习资料集合”中,我们可以深入理解Axis在...

    axis学习资源,很不错的资料哦

    标题"axis学习资源,很不错的资料哦"暗示了这是一份关于AXIS学习的宝贵资料,包含了AXIS的各个关键方面,适合初学者和进阶者深入理解并掌握这一技术。 描述中提到的主要内容包括: 1. AXIS的安装:AXIS的安装流程...

    Axis2学习教程-全面学习AXIS

    【Axis2学习教程-全面学习AXIS】是一个针对Java开发者的教程,专注于教授如何使用Axis2这一流行的WebService引擎。Axis2是Apache软件基金会开发的Web服务框架,它为创建和部署Web服务提供了一种高效且灵活的方式。在...

    axis学习资料汇总

    axis学习资料汇总: Axis实例与分析详解; Axis学习笔记.pdf; Tomcat5.0.28下AXIS完全安装手册.doc; Axis1.4 开发指南_V1.0.pdf; AXIS入门及应用.rar; Axis开发Web+Services.doc 等等

    axis axis学习下载

    方式等等等等等等等等等等等等等等等等等等axis

    AXIS学习笔记

    AXIS学习笔记主要涵盖如何使用AXIS框架来开发SOAP Web服务和客户端程序。SOAP(简单对象访问协议)是一种用于交换结构化信息的标准协议,常用于Web服务交互,尤其是在企业内部系统如ERP的集成中。 首先,你需要搭建...

    axis1.4学习示例(详细步骤说明)

    总结来说,学习 Axis1.4 主要涉及以下几个关键点: 1. 下载并引入 Axis1.4 相关 JAR 包到项目中。 2. 配置 `web.xml` 文件以注册 Axis 相关的 Servlet 和监听器。 3. 创建服务端 Java 类,定义 Web 服务接口。 4. ...

    AXIS学习笔记.doc

    AXIS学习笔记

    webservice学习之Axis2 (一)

    【标题】:“Web服务学习之Axis2(一)” 在Web服务的世界中,Apache Axis2是Java平台上一个强大且灵活的工具,用于构建和部署Web服务。本篇将重点介绍Axis2的基础知识,以及如何开始使用它进行开发。 **1. Web...

    Axis_API和axis2_API

    这些文件可能包含上述提到的API参考、教程和示例代码,它们是学习和开发基于Axis或Axis2的Web服务不可或缺的资源。通过仔细阅读这些文档,开发者可以掌握如何使用Axis或Axis2来创建符合WS-I标准、高性能的Web服务,...

    Axis2版本学习笔记

    Axis2是Apache软件基金会开发的一款开源Web服务框架,主要用于构建高效、灵活且可扩展的Web服务。本笔记将深入探讨Axis2的核心概念、版本差异、安装配置以及在实际项目中的应用。 1. **核心概念** - **SOAP**: ...

    Axis学习详细资料

    ### Axis学习详细资料知识点解析 #### 一、Axis概述 Axis是Apache软件基金会下的一个开源项目,主要用于构建和调用Web服务。它提供了一种简单而有效的方式,用于实现Java和其他语言之间的通信,通过XML和SOAP协议...

    Axis实践之Axis入门

    Axis是一个流行的开源SOAP(Simple Object Access Protocol)库,它允许开发者在Java平台上构建和部署Web服务。本篇文章将带你逐步了解如何在Tomcat服务器上安装和配置Axis,以便开始你的Web服务开发之旅。 **第一...

    AXIS2快速学习资料

    在这个名为"AXIS2快速学习资料"的压缩包中,包含两份宝贵的资源:一份是中文的Word文档,标题为"Axis2--Java访问Axis2接口.doc",另一份是英文的PDF,标题为"Axis2--Dev_Web_Services_With_Apache_Axis2.pdf"。...

Global site tag (gtag.js) - Google Analytics