`
javasogo
  • 浏览: 1825941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用Axis开发基于Java的Web服务

阅读更多
  概述

  本文介绍了一个比较简单实用的基于Java的SOAP引擎——Apache组织推出的Axis——的安装、配置和应用开发方法,希望对有兴趣做基于Java的Web Services应用开发的朋友有所帮助。

  Axis简介

  Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本是采用Java开发的1.1版本,C++的版本正在开发之中。Axis v1.1软件包可以从http://ws.apache.org/axis/dist/1_1/下载得到。

  Axis的安装

  应用Axis开发Web Services,你需要有一个支持Servlet的服务器引擎,比如广为人知的Tomcat(Tomcat也是由Apache组织所提供的,目前的最新版本为4.1.24,下载地址为http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/)。在此之前当然你机器必须已经装好了JDK1.3以上的版本,当安装好Tomcat之后,只需将下载的Axis软件包解压缩,将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下即可。

  Axis的配置

  Axis基于Java开发,可以部署于多种操作系统,使用前需要配置一系列的系统变量,在此假定你已经在本机上装好了Tomcat 4.0以上的版本,需要配置的系统变量如下表所示:

CATALINA_HOME
C:\Tomcat_4_1

(此处应为Tomcat的安装位置,注意路径名中不要有空格)

AXIS_HOME
%CATALINA_HOME%\webapps\axis

AXIS_LIB
%AXIS_HOME%\lib

AXISCLASSPATH
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar


  如果你不愿做这么繁琐的类路径设置,可以直接将axis软件包中“lib”目录下的所有.jar文件加入到系统环境变量CLASSPATH中即可。

  Axis的测试

  安装配置完毕后,应测试一下是否Axis可以正确运行了。

  启动Tomcat服务器,在浏览器中访问http://localhost:8080/axis/happyaxis.jsp,如果页面显示有错误,则需要回头检查一下相关配置是否正确,如果浏览页面能正确显示出系统组件、属性等参数配置信息,则表示安装成功,如下图所示:


  现在可以开始开发你的Web Services应用了。

  服务的发布

  Axis提供了两种服务发布方式,一种是即时发布(Instant Deployment),一种是定制发布(Custom Deployment)。

  使用即时发布

  对即时发布的支持是Axis的特色之一,使用即时发布使用户只需有提供服务的Java类的源代码,即可将其迅速发布成Web服务。每当用户调用这类服务的时候,Axis会自动进行编译,即使服务器重启了也不必对其做任何处理,使用非常简单快捷。

  使用即时发布首先需要一个实现服务功能的Java源文件,将其扩展名改为.jws(Java Web Service的缩写),然后将该文件放到“……\webapps\axis”目录下即可。

  在此给出一个从英里到公里的长度单位转换的服务,其源码如下:

文件Distance.jws

程序代码:
/**
*@author飞鹰
*/


publicclassDistance
{
publicdoubleconvertMile2Kilometre(doublemile)
{
//实现英里到公里的距离转换
returnmile*1.609;
}//convertMile2Kilometre()
}/*Distance*/



  将其放到“……\webapps\axis”目录,通过访问http://localhost:8080/axis/Distance.jws?wsdl可以看到这个服务的WSDL描述文件,这说明Distance服务被成功发布了。如下图所示:



  使用定制发布

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

  因此,Axis提供了另一种服务发布方式,这就是定制发布。

  在此给出一个从加仑到升的容积单位转换的服务,其源码如下:

  文件Capacity.java

程序代码:
packagesamples.capacity;

/**
*@author飞鹰
*/


publicclassCapacity
{
publicdoubleconvertGallon2Litre(doublegallon)
{
//实现加仑到升的容积转换
returngallon*4.546;
}//convertGallon2Litre()
}/*Capacity*/


  将其编译成.class文件,放置到“……\webapps\axis\samples\capacity”目录下,即可着手进行发布。

  定制发布不需要构建.jws文件,但必须创建服务发布描述文件deploy.wsdd(Web Service Deployment Descriptor的缩写),这个文件负责描述服务的名称、入口等信息,其内容如下:

  文件deploy.wsdd

程序代码:
<deploymentxmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<servicename="Capacity"provider="java:RPC">
<parametername="className"value="samples.capacity.Capacity"/>
<parametername="allowedMethods"value="*"/>
</service>
</deployment>



  将该文件也放到“……\webapps\axis\samples\capacity”目录下,然后可以采用Axis提供的一个客户端管理工具——AdminClient来完成服务的定制发布。

  在“……\webapps\axis\samples\capacity”目录下,运行:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd


  可以看到以下运行结果:

Processing file deploy.wsdd

<Admin>Doneprocessing</Admin>


  这表明Capacity服务定制发布完成。

  通过访问http://localhost:8080/axis/services/Capacity?wsdl可以看到这个服务的WSDL描述文件,这说明Capacity服务被成功发布了。如下图所示:





  服务的访问

  GET方式的服务访问

  一般的SOAP消息都是采用POST方式实现传递,但也可以通过GET方式来访问。比如以下给出的一个服务——“HelloWorld”,其源码如下:

文件HelloWorld.jws

程序代码:
publicclassHelloWorld
{
publicStringhelloWorld()
{
//在服务器端打印输出
System.out.println("HelloWorld!");
//返回相应字符串
return"HelloWorld!";
}//helloWorld()
}/*HelloWorld*/


  这个服务给出一个名位“helloWorld”的无入口参数的操作,返回一个内容为“Hello World!的字符串”,同时在服务器端打印“Hello World!”,将该文件放到“……\webapps\axis”目录下,即可通过GET方法直接访问该服务,访问的地址为http://localhost:8080/axis/HelloWorld.jws?method=helloWorld,可以看到返回的SOAP信封消息,同时服务器端给出了相应的显示信息“Hello World!”这表明HelloWorld服务被成功访问了。如下图所示:



  客户端服务访问编程

  Axis提供了一套API来实现SOAP,从http://localhost:8080/axis/docs/apiDocs/index.html可以看到Axis的API文档。

  其中,org.apache.axis.client.Call和org.apache.axis.client.Service是两个比较常用的类,一般的客户端程序欲访问一个Web Service时,都要生成一个客户端的Service对象和Call对象,在访问服务之前,首先要对Call对象设置相应的参数,包括服务的位置、操作名、入口参数、返回值类型等,最后调用Call对象的invoke方法访问服务。

  以下给出了一个客户端访问Web服务的例程——AXISTest.java:

  文件AXISTest.java

程序代码:
packageaxisexercise;
importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importorg.apache.axis.encoding.XMLType;
importjavax.xml.rpc.ParameterMode;

/**
*@author飞鹰
*/


publicclassAXISTest
{
publicstaticvoidmain(String[]args)throwsException
{
Serviceservice=newService();
Callcall=(Call)service.createCall();

//////////访问即时发布的Distance服务
//设置访问点
call.setTargetEndpointAddress("http://localhost:8080/axis/Distance.jws");

//设置操作名
call.setOperationName("convertMile2Kilometre");
//设置入口参数
call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN);
call.setReturnType(XMLType.XSD_double);
doubled1=newDouble(190);
//调用服务
System.out.println(d1+"英里相当于"+
call.invoke(newObject[]{d1})+"公里!");

//////////访问定制发布的Capacity服务
call=(Call)service.createCall();
//设置访问点
call.setTargetEndpointAddress("http://localhost:8080/axis/services/Capacity");

//设置操作名
call.setOperationName("convertGallon2Litre");

//设置入口参数
call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN);
call.setReturnType(XMLType.XSD_double);
d1=newDouble(10.00);

//调用服务
System.out.println(d1+"加仑相当于"+
call.invoke(newObject[]{d1})+"升!");
}//main()
}/*AXISTest*/



  编译运行后运行可以看到以下的结果:

  190.0英里相当于305.71公里!

  10.0加仑相当于45.46升!
 
  注意程序在访问即时发布的Distance服务和定制发布的Capacity服务时的不同,前者的服务访问点地址为http://localhost:8080/axis/HelloWorld.jws,而后者的则为http://localhost:8080/axis/services/Capacity。

  总结

  Web Services是未来网络应用的发展方向,SOAP和WSDL是Web Services的核心协议,Axis给出了一个很好的SOAP实现,它使得开发Web Services应用变得轻松而有趣。
分享到:
评论

相关推荐

    用Axis开发基于Java的Web服务.docx

    本文将详细介绍如何利用Axis开发基于Java的Web服务。 ### Axis简介 Apache Axis是Apache SOAP项目的后续项目,它支持SOAP 1.1规范,并提供了Java和C++两个版本。在本文中,我们将关注Java版本的Axis 1.1。这个工具...

    基于java的开发源码-Web服务框架 Apache Axis.zip

    基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的...

    基于Axis开发Web服务

    Axis是一个开源项目,由Apache软件基金会维护,用于支持基于Java的SOAP Web服务的开发。它简化了开发过程,使开发者能够专注于业务逻辑而不是底层技术细节。Axis的主要组件包括传输监听器/传输发送器、Axis引擎、...

    AXIS开发的基于JAVA的webservice及客户端

    基于Java的AXIS使得开发者能够利用Java平台的强大功能来构建Web服务。在本篇博文中,我们将深入探讨AXIS如何帮助开发者在Java环境中实现Web服务的开发。 首先,Web服务是一种通过互联网进行通信的应用程序接口(API...

    java+axis简单开发

    Axis是基于Java的SOAP(Simple Object Access Protocol)实现,遵循SOAP 1.2和SOAP with Attachments规范。它被广泛应用于各种开发工具,如JBuilder和Eclipse的Lomboz插件。Axis 1.1是其当时最新的版本,提供了一个...

    基于AXIS2实现Web Service开发

    基于AXIS2的Web Service开发涉及多个步骤,包括环境配置、服务创建、服务实现、服务部署和测试。理解这些步骤并熟练掌握AXIS2的使用,对于开发高效、稳定的Web Service至关重要。同时,了解相关的Web Service标准和...

    基于java的Web服务框架 Apache Axis.zip

    总结,Apache Axis作为Java Web服务框架,提供了一整套构建、部署和管理Web服务的工具,极大地简化了Web服务的开发过程。无论是新手还是经验丰富的开发者,都能从中受益,快速实现Web服务的开发和集成。

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    axis2 axis webservice web 服务

    Axis提供了基于Java的Web服务开发工具,使得开发者可以轻松地将Java类转换为Web服务。Axis的主要功能包括: - **自动WSDL生成**:可以从Java类自动生成WSDL文件,描述服务接口。 - **SOAP绑定**:直接将Java方法映射...

    基于Axis开发Web服务的研究

    ### 基于Axis开发Web服务的研究 #### 1. 引言 随着互联网技术的飞速发展,Web服务已经成为构建分布式系统的关键技术之一。它不仅支持跨平台、跨语言的应用程序开发,还成为了实现企业间业务流程整合的重要手段。在...

    基于Java的Web服务框架 Apache Axis.zip

    这个压缩包“基于Java的Web服务框架 Apache Axis.zip”很可能包含了Apache Axis的相关资料和库文件,使得用户可以快速地理解和使用这个框架。 Web服务是一种通过互联网交换数据的方式,它允许不同系统间的无缝通信...

    MyEclipse+Axis2插件开发Web服务

    Axis2是Apache软件基金会提供的一个开源Web服务框架,它基于Java语言,支持SOAP协议,并且具有轻量级、高性能等特点。Axis2不仅提供了强大的功能,如消息路由、事务处理、安全性和可靠性等,还提供了一整套开发工具...

    使用Axis开发Web服务

    ### 使用Axis开发Web服务 #### 1. Axis介绍 Apache Axis 是一个开源的 SOAP 基础架构,用于实现 Web 服务。它是由 Apache 软件基金会维护的一个项目,可以用于构建和调用 SOAP 协议的 Web 服务。Axis 最初是从 IBM...

    基于java平台的web服务实现与应用

    本章节将深入探讨Web服务的开发平台,特别是基于Java平台的Web服务实现方法。 ##### Web服务技术框架回顾 - **XML(Extensible Markup Language)**:作为Web服务中的默认数据格式,XML被广泛应用于数据的传输和...

    java基于Axis2调用C#开发的web service获取xml结果

    本主题将深入探讨如何使用Java的Axis2框架调用由C#开发的Web服务来获取XML结果。以下是相关知识点的详细解释: 1. **Web Service**: Web服务是一种通过HTTP协议进行通信的应用程序接口(API),允许不同系统间的...

    基于Java平台Web服务实现

    ### 基于Java平台Web服务实现 #### Web服务开发平台简介 在信息化时代背景下,Web服务成为一种关键的技术手段,它允许不同系统之间通过网络进行通信和数据交换,极大地促进了跨平台、跨系统的集成与协作。为了更好...

Global site tag (gtag.js) - Google Analytics