1 介绍
本文并不是想介绍Web服务的原理、系统架构等,我们假设您已经了解了关于Web服务的一些基本的概念、原理等知识。本文主要是针对那些已经了解Web服务概念,但是还没有亲身体会Web服务所带来令人欢欣鼓舞的特征的开发人员。在此我们认为你已经具备了Java、XML等基础知识,如果你还有其他开发环境的经验例如VB、VC那是再好不过的了。
1.1 Web服务
虽然我们并不想详细讲述Web服务的体系结构,但是大概的介绍一下还是有必要的。Web服务是一种新型的Web应用程序。不同于其他Web应用程序,它是自适应、自我描述、模块化的应用程序,并可以跨越Web进行发布、定位以及调用。简单的Web服务可以提供例如天气预报或者航班信息的服务。一旦部署了Web服务,其他的应用程序就可以发现和调用所部署的服务。
1.2 AXIS项目
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是1.1,可以从http://ws.apache.org/axis/index.html下载。下图是AXIS核心引擎的体系结构图:
整个AXIS项目包括以下几个部分:
1. 消息流子系统
消息流子系统提供了灵活的消息传递框架,这个消息传递框架包括处理程序、链、序列化程序和反序列化程序。处理程序是一个处理请求、响应和故障流的对象。处理程序可被组合在一起成为链,而且可以使用一个灵活的部署描述符来配置这些处理程序的顺序。
2. 传输框架子系统
提供了一个传输框架,这个传输框架可以帮助您创建自己的可插式传输发送器和传输侦听器。
3. 数据编码子系统
AXIS完全按照 XML Schema 规范提供各种数据类型的自动序列化,并且提供功能扩展接口来使用您自己定制的序列化器和反序列化器。
4. 其他
AXIS完全支持 WSDL 以及日志记录、出错以及故障处理机制。它同时提供一些工具用来讲WSDL文档转换成客户端的调用框架以及根据类来产生WSDL定义文档。
AXIS目前版本支持的标准是:W3C SOAP 1.1 和 1.2;WSDL 1.1;SAAJ 1.1(SUN公司:SOAP with Attachments API for Java);JAX-RPC(SUN公司:Java API for XML-Based RPC)1.0。
2 Axis使用
2.1 Axis运行需要哪些jar文件
对Axis解包后,将axis-1_1/webapps/axis/WEB-INF/lib/目录下的jar文件复制到/usr/local/apache/htdocs/WEB-INF/lib目录下(Web应用程序的目录)。应包括以下jar文件。
axis-ant.jar
axis.jar
commons-discovery.jar
commons-logging.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j.jar
2.2 Axis使用注意事项
2.2.1 获取WSDL文件
Axis支持用户通过网络方式,从已发布WEB服务的机器上获取WEB服务描述文件WSDL。用户只需简单在IE地址栏输入如下格式访问链接即可:
http://webappIp[/webapp]/services/WebServiceName?wsdl
其中:
webAppIp:运行WEB服务机器的地址。
[/webapp]:运行Axis WEB服务的Web应用名;如果应用使用跟目录,则不需要
services/WebServiceName:WEB服务定位路径,类似Servlet路径;其中WebServiceName为定义的Web服务接口名称。
用户将访问获的文件直接保存,即可获取对应WEB服务的WSDL描述文件。
2.2.2 参数类型定义(输入、输出参数)
如果用户希望使用函数定义中的输出参数获取响应结果时,自动生成的WSDL文件无法满足,必须手动对自动生成的WSDL文件进行修改。
如定义java Interface接口如下:
int queryUser(long type,User[] users) ;
则使用java2WSDL生成的WSDL如下:
为了将User[]作为输出参数,必须修改自动生成的WSDL文件,在QueryUserResponse返回消息中,添加User[]参数定义,告知Axis在WSDL2java处理中,将User[]作为输入/输出参数处理。
2.2.3 server-config.wsdd
Axis会在WEB应用程序的WEB-INF/目录下自动生成一个名字为server-config.wsdd的xml文件,其中记录了已部署的WEB服务。每部署一个新的WEB服务时,Axis都会将新服务的描述信息加入到server-config.wsdd中。
如果需要在Web服务器启动时,自动加载WEB服务,只需将server-config.wsdd与WEB应用描述文件web.xml一并放置在WEB-INF目录下即可。
server-config.wsdd中的内容可以手工更改获取,也可通过发布获取自动生成的文件。
a) 将WEB服务发布后,从WEB应用的WEB-INF目录下,获取自动生成的server-config.wsdd文件。
b) 手工更改时,将deploy.wsdd文件中的…中的内容直接拷贝,粘贴到原始server-config.wsdd文件中单独行即可。
2.2.4 如何将Axis集成到自己的Web应用中。
Axis是以Servlet的方式运行的,而Tomcat的作用相当于Servlets容器(Container),因此只要配置得当,就可以使Axis在Tomcat环境中运行,这一点也适用于Tomcat以外的其它应用服务器。在Tomcat中配置Axis的方法如下。
将axis-1_1/webapps/axis/WEB-INF/web.xml中的Servlet配置项复制到自己Web应用描述文件web.xml中对应位置上。通常应包括以下内容。
在Servlet定义与servlet-mapping定义间,将本WEB应用的Servlet定义加入。
AxisServlet
Apache-Axis Servlet
org.apache.axis.transport.http.AxisServlet
AdminServlet
Axis Admin Servlet
org.apache.axis.transport.http.AdminServlet
100
SOAPMonitorService
SOAPMonitorService
org.apache.axis.monitor.SOAPMonitorService
SOAPMonitorPort
5001
100
AxisServlet
/axis/servlet/AxisServlet
AxisServlet
*.jws
AxisServlet
/services/*
SOAPMonitorService
/SOAPMonitor
wsdl
text/xml
xsd
text/xml
2.2.5 Axis提供了哪些开发工具
Apache Axis提供了WSDL2Java和Java2WSDL两个开发工具。
WSDL2Java利用已知的WSDL文件生成服务端和客户端代码。该WSDL文件可以是由合作伙伴提供的,也可以是利用Java2WSDL生成的。Java2WSDL根据已有的Java类文件生成WSDL文件,Java类文件可以是接口类文件,并不需要实现细节。
此外Axis还提供了SoapMonitorApplet和TCPMon工具,可用于监测Web服务。
1 如何开发Web服务的服务端和客户端代码
1.1 生成或取得WSDL文件
Java2WSDL是Axis提供的利用Java类文件得到WSDL文件的工具。类文件可以使用接口文件编译生成。
生成WSDL文件以后,就可以利用Axis提供的WSDL2Java工具生成Web服务的服务端代码和客户端代码了
注意事项 :
WSDL文件也可以由合作伙伴提供。这种情况下合作伙伴往往是Web服务的提供者或标准接口的制定者,开发者只要按照既定的WSDL文从件生成客户端或服务端代码就可以了。
1.2 开发客户端
在开发客户端时,WEB接口定义文件WSDL一般已经提供,或者可以通过Internat获取。如果未提供一般也提供了接口描述文档,详细描述了接口输入、输出参数定义,据此我们可以声明Interface接口,通过Aixs提供的java2WSDL生成WSDL文件。
下面我们假定WSDL文件已经提供;并且我们假定读者对eclipse、ant已经有一定了解。
WSDL2Java工具用于从WSDL文件生成客户端存根(stub)代码,服务端框架(skeleton)代码以及WSDL中的数据类型文件(生成与之对应的Java代码)。开发人员只需向框架代码中补充相关的业务逻辑代码即可得到完整的Web服务代码,因此该工具极大地减轻了开发人员的编码负担。
axis_ant.jar包中已经定义了Axis集成Ant的相关Ant任务定义。任务定义在axis-tasks.properties中
#properties file for taskdefing the public Axis taskdefs
axis-wsdl2java=org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask
axis-java2wsdl=org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask
axis-admin=org.apache.axis.tools.ant.axis.AdminClientTask
Ant任务名
对应Axis提供的工具
备注
axis-wsdl2java
WSDL2java
axis-java2wsdl
Java2WSDL
axis-admin
AdminClient
1. 假定应用工程目录结构如下:
│ build.properties
│ build.xml
│ myAxis.wsdl
├─bin
└─src
2. build.properties文件内容如下:
axis.home = D:\\java\\axis\\axis-1_2beta
wsdl.file = myAxis.wsdl
namespace.service = urn:MyAxis
package.service = com.MyAxis.client
3. Ant文件build.xml内容如下:
定义Axis包所在类路径-->
从axis-ant.jar包中,引入Axis的Ant任务定义-->
classpathref="axis.classpath" />
依据WSDL文件,生成客户端代码-->
url="${basedir}/${wsdl.file}"
deployscope="Request"
output="${generated.path.src}"
serverside="false"
skeletondeploy="false"
testcase="true"
noimports="false"
>
1.1 开发服务端
开发服务端程序的一般步骤如下:
l 根据接口定义,定义java Interface接口。
l 根据interface接口文件,使用java2WSDL生成WEB服务描述文件
l 根据WSDL文件,使用WSDL2java生成对应的服务端代码
l 修改自动生成的实现代码类[webapp]SoapBindingImpl.java,完成接口具体操作。
l 考虑到WEB服务为系统对外门户,具体业务逻辑可能分模块实现,建议考虑参考门面模式完成interface定义;在服务端具体实现时,WEB服务接口部分向逻辑提供接口,由逻辑实现组件完成具体的逻辑操作。WEB服务部分仅完成SOAP协议解封装等工作。
1. 假定工程路径如下:
├─conf
├─generated
├─source
├─src
└─WebRoot
├─META-INF
└─WEB-INF
└─lib
2. build.properties Ant脚本使用属性
wsdl.file = myAxis.wsdl
########接口文件com.myaxis.MyAxis.java;供java2WSDL使用#####
wsi.interface = com.myaxis.MyAxis
location = http://localhost/CmsWsi/services/CmsWsi
########期望生成的接口定义包与命名空间对应关系;供WSDL2java使用###
namespace.service = http://com. myaxis.MyAxis/1.00
package.service = com.myaxis.server
########期望生成的接口相关消息类与命名空间对应关系;供WSDL2java使用###
namespace.service.msg = http://com.myaxis.msg
package.service.msg = com.myaxis.server.msg
########WEB容器定义,共AdminClient发布、注销WEB服务使用###
target.port = 80
target.server = localhost
target.appname = MyAxis
servletpath.admin = services/AdminService
########在ANT脚本中采用命令行方式时,发布调用的AdminClient位置##
location.admin = http://localhost/MyAxis/services/AdminService
3. build.xml
加载build.propertis定义-->
容器下的类路径,Axis相关jar已拷贝到对应目录下-->
引入Axis的Ant任务定义-->
classpathref="axis.classpath" />
初试化,构造WSDL2java生成代码路径,-->
依据java Interface定义,生成WSDL定义文件-->
location="${location}"
namespace="${namespace.service}"
output="${generated.path}/${wsdl.file}"
style="RPC"
>
根据WSDL文件,生成WEB服务的服务器端源码;考虑到接口更改,版本管理的方便,生成代码不直接导向src目录;第一次运行后,需要手工将代码拷贝到src;每次修改接口后,必须清空生成源目录,通过比较工具修改src目录下的源文件,否则Axis判断[webapp]SoapBindingImpl.java已存在不会进行更新。-->
url="${basedir}/${wsdl.file}"
deployscope="Request"
output="${generated.path.src}"
serverside="true"
skeletondeploy="false"
testcase="true"
noimports="false"
>
拷贝Web服务发布、注销脚本,deploy.wsdd和undeploy.wsdd-->
发布WEB服务到WEB容器,Axis在WEB-INF/下自动生成server-config.wsdd-->
脚本方式发布服务-->
命令行方式发布服务-->
fork="true"
failonerror="true">
分享到:
相关推荐
在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它使用XML作为数据交换格式,并通过HTTP进行传输。...
以下是使用Apache Axis进行Web Service开发的关键步骤: 1. **创建服务**: 开发者首先定义Java接口和服务实现,这些接口描述了可供远程调用的方法。然后,使用Axis工具,这些接口和实现可以被转换成SOAP服务。 2. ...
Extensive and detailed coverage of the enterprise ... Written by Deepal Jayasinghe, a key architect and developer of the Apache Axis2 Web Service project; and Afkham Azeez, an elected ASF and PMC member.
标签“axis2, apache axis2, web service”进一步强调了我们讨论的主题是关于使用Apache Axis2框架进行Web服务开发。Web服务是一种通过网络进行通信的应用程序接口,允许不同系统之间的数据交换。Apache Axis2作为...
### Axis开发Web Service的实例详解 #### 一、概述 在现代软件开发中,Web服务是一种重要的技术,它允许不同应用程序之间通过网络进行通信。Apache Axis是实现Web服务的一个流行框架,它支持SOAP协议,并提供了...
此示例演示了如何使用 Apache Axis 开发和部署 Web Service,并通过客户端进行调用。需要注意的是,客户端和服务端的通信依赖于 SOAP 协议和 XML 数据格式。在实际开发过程中,可以根据具体需求调整服务发布方式和...
Chapter 1, Apache Web Services and Axis2 - Gives you an introduction to web services and the web service stack at Apache. Chapter 2, Looking inside Axis2 - Learn about Axis2 architecture and the ...
Apache Axis是Apache软件基金会开发的一个开源工具,专门用于构建和部署Web服务。这篇博客文章将引导我们如何利用Apache Axis来生成Web服务客户端,从而实现天气预报功能的开发。下面,我们将深入探讨这个过程中的...
包括3本Axis2的书(英文),實為2本(第1本有...1.Developing Web Services with Apache CXF and Axis2, 3rd Edition 2.Packt.Publishing.Quickstart.Apache.Axis2 3.Develop Web Services With Apache Axis2 PDF格式
### 使用Axis开发Web Service程序 #### 一、概述 随着互联网技术的发展,Web Service作为一种标准的、基于XML的网络服务形式,在实现不同平台之间数据交换和应用集成方面扮演着重要角色。Axis作为Apache组织下的一...
AXIS 是 Apache 开源项目提供的一款强大的 Web Service 引擎,用于开发和部署 Web Service。在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:...
总之,Apache Axis是Java开发者构建Web服务的重要工具,它简化了Web服务的开发、部署和测试,促进了不同系统之间的互操作性,并且拥有丰富的扩展性和强大的安全特性。通过深入理解和熟练使用Apache Axis,开发者可以...
【Axis2 Web Service 开发教程】是一份详细指导开发者如何使用Apache Axis2框架创建和部署Web服务的教学资料。Apache Axis2是Java世界中一个强大的Web服务引擎,它提供了高效的性能和灵活的架构,使得Web服务的开发...
### MyEclipse下开发Web Service(Axis):深入解析与实践指南 #### 一、环境配置与准备 在深入探讨如何使用Apache Axis在MyEclipse环境下构建Web Services之前,首要任务是确保拥有一个完整的开发环境。这包括但不...
基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的...
【标题】:Axis开发Web Service程序学习笔记 【概述】: Web Service是一种允许不同系统间进行交互的技术,它使得应用程序可以透明地调用互联网上的服务,而无需关注具体实现细节。这种技术的关键在于公开服务接口...
【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...