`

axis入门

    博客分类:
  • axis
阅读更多
一、Axis简介
1. 什么是SOAP
SOAP是一个基于XML的用于应用程序之间通信数据编码的传输协议。最初由微软和Userland Software提出,随着不断地完善和改进,SOAP很快被业界广泛应用。在其发展过程中,W3C XML标准工作小组积极促成SOAP成为一个真正的开放标准。
SOAP被广泛作为新一代跨平台、跨语言分布计算Web Services的重要部分。
2. 什么是Axis
Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本软件包可以从http://ws.apache.org/axis/下载得到。
但是Axis不仅仅是一个SOAP引擎,它还包括:
    一个独立运行的SOAP服务器
    一个servlet引擎的插件,这个servlet引擎可以是Tomcat
    对WSDL的扩展支持
    一个将WSDL的描述生成JAVA类的工具
    一些示例代码
    还有一个监控TCP/IP包的工具

二、Axis的安装
应用Axis开发Web Services,你需要安装如下软件:
1.JDK1.4.2及其以上
2.一个支持Servlet的服务器引擎,比如广为人知的Tomcat。
当安装好Tomcat之后,只需将下载的Axis软件包解压缩,将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下即可。
3.环境变量设置
  AXIS_HOME 即axis-bin-1_2.zip解压的目录(我的是在F:\soap\axis-1_2)
  AXIS_LIB   即 %AXIS_HOME%\lib
  AXISCLASSPATH 即 %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR文件都导入
三、Axis的测试
安装配置完毕后,应测试一下是否Axis可以正确运行了。
  启动Tomcat服务器,在浏览器中访问http://localhost:8080/axis/happyaxis.jsp,如果页面显示有错误,则需要回头检查一下相关配置是否正确,如果浏览页面能正确显示出系统组件、属性等参数配置信息,则表示安装成功。现在可以开始开发你的Web Services应用了。
四、服务的发布
Axis提供了两种服务发布方式,一种是即时发布(Instant Deployment),一种是定制发布(Custom Deployment)。
1. 使用即时发布 Java Web Service(JWS)
  对即时发布的支持是Axis的特色之一,使用即时发布使用户只需有提供服务的Java类的源代码,即可将其迅速发布成Web服务。每当用户调用这类服务的时候,Axis会自动进行编译,即使服务器重启了也不必对其做任何处理,使用非常简单快捷。
  使用即时发布首先需要一个实现服务功能的Java源文件,将其扩展名改为.jws(Java Web Service的缩写),然后将该文件放到“……\webapps\axis”目录下即可。
编写JAVA类Hello.java
public class Hello{
 public String hello(String name){
  if(name==null)
   name = "";
  return "hello,"+name;
}
}

将其名字更改为Hello.jws放到“……\webapps\axis”目录,通过访问http://localhost:8080/axis/Hello.jws?wsdl可以看到这个服务的WSDL描述文件,这说明Distance服务被成功发布了。
需要注意的是:JWS的web服务发布是一个很简单的Web服务发布方式,在页面中你不能使用包,而且由于代码是在运行期被编译的,所以在部署之后,你也很难找到错误所在。
客户端的开发:
先熟悉一下两个概念:
SOAP:简单对象访问协议。这是一种在松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单且轻量级的机制,它是一个基于XML的协议。它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。
虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样使得定义更加简单。
SOAP的主要设计目标是简明性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的特性将不包含在SOAP的核心规范中。这些特性包括:分布式垃圾收集;批量消息传输/处理;对象引用;对象激活。
WSDL:Web Service描述语言。使用了WSDL,我们就可以通过这种跨平台和跨语言的方法使Web Service代理的产生自动化。就像COM和CORBA的IDL文件,WSDL文件由客户和服务器约定。由于WSDL设计成可以绑定除SOAP以外的其他协议,这里我们主要关注WSDL在HTTP上和SOAP的关系。同样,由于SOAP目前主要用来调用远程的过程和函数,WSDL支持SOAP传输的文档规范。
WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的网站都可以实现。

打开命令行窗口,转到AXIS目录下的WEB-INF子目录。确保Tomcat服务已经处于启动状态,键入命令 :
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl

该命令执行的结果是在当前所在目录下产生一个子目录 localhost/axis/Hello_jws,该目录下有四个JAVA源文件,它们分别是:
Hello.java 定义了Web服务接口,此例中只有一个hello方法。
HelloService.java 定义了用于获取Web服务接口的方法。
HelloServiceLocator.java 接口HelloService的具体实现。
HelloSoapBindingStub.java Web服务客户端桩,通过该类与服务器交互。
这四个JAVA类帮我们处理了大部分的逻辑,我们需要的仅仅是把这些类加到我们的项目然后创建一个我们自己的类来调用它们即可。为此我们新加一个类Main.java,为了方便,让这个类与刚产生的四个类都在同一个包下。内容如下:
//Main.java
package localhost.axis.Hello_jws;
public class Main{
public static void main(String[] args) throws Exception{
 HelloService service = new HelloServiceLocator();
 Hello hello = service.getHello(); 
 System.out.println("Response:"+hello.hello("Peter")); 
 }
}

使用以下命令进行编译:
javac -classpath lib\axis.jar;lib\jaxrpc.jar localhost\axis\Hello_jws\*.java

如果编译没有问题的话执行该测试程序:
java -Djava.ext.dirs=lib -cp . localhost.axis.Hello_jws.Main//运行结果:Response:hello,Peter


或者编写如下代码进行测试:
package com.axis;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class TestClient {
	public static void main(String[] args) throws Exception {
		String endPoint="http://localhost:8080/axis/Hello.jws";
		Service service = new Service();
		Call call = (Call) service.createCall();
		call.setTargetEndpointAddress(new java.net.URL(endPoint));
		call.setOperationName("hello");
		String result = (String) call.invoke(new Object[]{"coris"});
		System.out.println(result);
	}
}

2. 使用定制发布 Web Service Deployment Descriptor(WSDD)
  即时发布是一项令人激动的技术,它使Web服务的开发变得如此简单;然而即时发布并不总是最好的选择,比如有些应用系统是第三方提供的,我们没有购买源代码,只有.class文件,但我们又希望将这个应用系统的一些功能对外发布成Web服务,使其能够在更大范围内产生作用,这个时候即时发布技术就无能为力了。此外,即时发布技术并不灵活,无法进行更多的服务配置,这使得它并不能满足一些特定系统的需求。
  因此,Axis提供了另一种服务发布方式,这就是定制发布。
首先编写java类
package com.axis;

public class Second {
	public String sayHello(String name){
		return "hello,"+name;
	}
}

将Second.java编译成Second.class,放到...\webapps\axis\WEB-INF\classes下
在...\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件
  deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="Second" provider="java:RPC">
  <parameter name="className" value="com.axis.Second"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布
同样用客户端程序访问一下:
注意与上面的区别
package com.axis;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class SecondClient {
	public static void main(String[] args) throws Exception {
		String endPoint = "http://localhost:8080/axis/services/Second";//唯有这与上面不一样  
		Service service = new Service();
		Call call = (Call) service.createCall();
		call.setTargetEndpointAddress(new java.net.URL(endPoint));
		call.setOperationName("sayHello");
		String result = (String) call.invoke(new Object[]{"coris"});
		System.out.println(result);
	}
}

运行结果:hello,coris
分享到:
评论

相关推荐

    Axis实践之Axis入门

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

    axis入门中文文档

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

    AXIS入门指南-webservice

    【AXIS入门指南-webservice】 本指南旨在为初学者提供AXIS框架下开发WebService的详细步骤,涵盖了从获取开发资源、生成 stub、编写服务器端代码到客户端测试的全过程。AXIS是一个开源的Java库,它提供了创建、部署...

    AXIS 入门测试

    这篇“AXIS 入门测试”可能是一篇介绍如何使用 AXIS 进行 Web 服务开发的博客文章,虽然描述部分没有提供具体信息,但我们可以从标签“源码”和“工具”推断出内容可能涉及编程代码和实际操作。 1. **Web 服务基础*...

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

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

    axis入门教程-开发详解

    在IT行业中,Axis是一个非常重要的工具,特别是在Web服务(Web Service)开发领域。它是一个开源的Java库,用于创建和部署Web服务。本教程将深入浅出地介绍如何使用Axis进行Web服务的开发,帮助初学者快速掌握相关...

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

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

    axis2入门及简单例子

    Axis2 入门及简单例子 Axis2 是一个基于 Java 的 Web 服务框架,它提供了一个灵活、可扩展、可靠的方式来创建、部署和管理 Web 服务。Axis2 是 Apache 软件基金会的一个开源项目,是基于 SOAP 和 WSDL 的 Web 服务...

    axis中文文档

    2. **Axis入门** - **安装与配置**:Axis的入门文档通常会介绍如何下载并安装Axis,包括配置环境变量,设置类路径,以及如何启动Axis服务器。 - **创建Web服务**:Axis提供了wsdl2java工具,可以基于WSDL(Web服务...

    axis2入门学习程序

    用于入门学习axis2,部署好即可用! //初始化文件 AxisProjectStub stub = new AxisProjectStub(); AxisProjectStub.Showname request = new AxisProjectStub.Showname(); request.setName("张三"); String name =...

    axis 开发webservice经典入门例子

    标题 "axis 开发webservice经典入门例子" 指向的是使用Apache Axis工具来创建和使用Web服务的基本教程。Apache Axis是开源的Java框架,它允许开发者轻松地在Java应用程序中构建和部署Web服务。本教程可能是为了帮助...

    Axis_API实例教程打包

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

    axis学习资料汇总

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

    Axis2 入门

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

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

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

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

    5. **Axis1入门**:虽然本压缩包主要关注Axis2,但包含的Axis1入门文档也值得一提。Axis1是Axis2的前身,虽然功能相对较弱,但在某些场景下仍被使用。了解Axis1的基本操作有助于对比理解Axis2的改进和优势。 6. **...

    axis2入门实例

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

Global site tag (gtag.js) - Google Analytics