Axis2基础

这篇指南提供了Apache Axis2新用户一个起步的地方。它也涵盖了一个高级主题,例如如何用Axis2建立和部署Web services以及如何用WSDL生成客户端和服务。

对于使用Apache Axis2有经验的用户来说,我们推荐高级用户指南。

  介绍Axis2
这部分介绍了Axis2和它的结构,包括对包含在最新可下载版本中的不同目录和文件的一个说明。

  目录介绍Axis2
Axis2是什么?
内部流程
Axis2如何处理SOAP消息
Axis2发行包
Axis2标准二进制发行包
Axis2.war目录结构
Axis2文档发行包
Axis2和客户端
安装和测试客户端代码
介绍服务
消息交换模式
建立客户端
选择一个客户端生成方法
生成客户端
Axis数据绑定(ADB)
搭建服务
可选择的方法
从无到有建立服务
部署Plain Old Java对象
部署和运行用WSDL建立的Axis2服务
例子
进一步的学习

  Axis2是什么?
Apache Axis2项目是一个基于Java语言的Web services系统服务和客户端的实现。为了从Apache Axis 1.0中获取教训,Apache Axis2提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与Web services相关的说明和建议。Axis2可以让你很容易的执行以下任务:
发送SOAP消息
接收和处理SOAP消息
从一个普通的Java类建立Web service
用WSDL来建立实现服务和客户端的实现类
很容易的从一个服务来获取WSDL
发送和接收带有附件的SOAP消息
建立或者使用基于REST的Web service
建立或者使用从WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination和WS-Atomic Transaction获取优势的服务
当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持
当然还存在很多其它特性,但是这篇指南主要集中在向你展示如何完成上面列表的前五个任务。

  内部流程
要理解Axis2并且知道它做了些什么,你必须对Web services消息的生命周期有一个很好的认识。通常,它看起来如下图所示:

发送应用程序建立原始SOAP消息,这是一个包含消息头和消息体的XML消息。(要获得更多的SOAP信息,查阅“服务介绍”)如果系统需要使用例如WS-Addressing或者WS-Security之类的WS*建议,这个消息就会在离开发送者之前经过额外的处理。一旦消息准备好了,他就会借助一个特别的传输器发送出去,例如HTTP,JMS等等。消息沿着它的路径发送到接收者,接收者是借助传输监听器接收消息的。(换句话说,如果应用程序没有运行HTTP监听器,那么它就将不会接收HTTP消息)再者,如果消息是需要使用WS-Security 或者其它建议的系统的一部分,那么为了检查凭证或者解密敏感信息,它需要一些额外的处理。最后,一个派发者决定这个消息发送到的指定应用程序(或者其它组件,例如Java方法),并且把它发送给这个组件。这个组件是一个完整的应用程序的一部分,这个应用程序是设计用来与这些来回发送的数据一起工作的。

  Axis2如何处理SOAP消息
Axis2可以处理一次事务中的发送者和接收者双方的过程。从Axis2的角度看,结构如下:

在一端,你有一个处理(发送或接收)消息的应用程序。在中间,你有Axis2,或者,你可以有Axis2。Web services的价值在于收发双方(任何一方都可以是服务段或者客户端)甚至不需要在同一个平台上,更不需要运行同一个应用程序。假设Axis2在两边同时运行,过程如下:
发送者建立SOAP消息。
Axis "handlers" 执行必要的操作,例如对相关消息进行WS-Security加密。
传输器发送者发送消息。
在接收端,传输监听者检测消息。
传输监听者将消息传递给接收端的所有handler。
一旦消息在“pre-dispatch”阶段处理完,它会被传递给派发者,然后被传给合适的应用程序。
在Axis2中,这些行动被分解成“阶段”,以及几个预定义阶段,例如“pre-dispatch”,“dispatch”和“message processing”,集成在Axis2中。每一个阶段是一组“handler”。Axis2可以让你来控制每个handler归属于哪个阶段,以及在一个阶段中各个handler的执行顺序。你也可以添加你自己的阶段和handler。Handler来自于可以被插入一个运行着的Axis2系统的模块。这些模块,例如提供WS-Security实现的Rampart,提供WS-ReliableMessaging实现的Sandesha,都是Axis2中的主要扩展机能。

  Axis2发行包
Axis2以多个发行包发行。你需要哪个视你所需决定。

  Axis2标准二进制发行包
如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。它具有以下结构。代码列表1:Axis2标准二进制发行包
bin
      axis2.bat
      axis2.sh
      axis2server.bat
      axis2server.sh
      java2wsdl.bat
      java2wsdl.sh
      wsdl2java.bat
      wsdl2java.sh
      setenv.sh
lib
      activation-1.1.jar
      ...
      XmlSchema.jar
repository
             modules
         modules.list
                addressing-1.1.mar
               ..
             services
         services.list
                version.aar
         ..
samples
      ...
webapp
      ...
conf
    axis2.xml
LICENSE.txt
README.txt
NOTICE.txt
INSTALL.txt
release-notes.html
bin目录包括一些有用的脚本。它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和 .sh)和wsdl2java.bat(和 .sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2的功能来发送接收消息。如所希望的,lib目录包含了所有必需的.jar文件。服务和模块放在repository目录。Axis2提供了一个WS-Addrssing的标准模块实现,你可以添加任何其它必要的模块到repository/modules目录,例如Rampart。Conf目录包括axis2.xml文件,它是全局部署描述。最后,示例目录包括了所有随Axis2一起发行的示例代码。查看示例及其描述列表。

  axis2.war发行目录结构
axis2.war可以从WAR (Web Archive)发行包处得到。这个Axis2服务端按照一个J2EE应用程序发布。它具有代码列表2所示结构。代码列表2:Axis2的服务端
axis2-web
META-INF
WEB-INF
    classes
    conf
        axis2.xml
    lib
        activation.jar
        ...
        xmlSchema.jar
    modules
        modules.list
        addressing.mar
        ...
        soapmonitor.mar
    services
        services.list
        aservice.aar
        ...
        version.aar
    web.xml
从顶上开始,axis2-web是一组JSP页面,它们组成了Axis2管理员应用,通过这个应用,你可以执行任何需要的行动,例如添加服务,启动或者停止服务。WEB-INF目录代表了实际的Axis2应用程序,包括所有的*.jar文件,任何添加的模块,甚至已经部署的服务自己。Classes目录包含了任何Axis2本身需要的类或者属性文件,例如log4j.properties。任何由系统处理的实际的服务位于services目录,它们以axis卷或者*.aar文件的形式存在。这个文件包含了与这个服务相关的所有类文件,以及控制任何额外需求的service.xml文件,例如消息收发者的定义。所有这些最主要的文件是axis2.xml,它控制了应用程序如何处理接收到的消息。它定义了消息接收者和传输接收者,以及定义传输发送者和决定哪个模块是活跃的。它也定义了阶段的顺序,以及在每个阶段中执行的handler。你可以控制通过使用Web应用程序来控制所有这些信息,但是如果你重启Axis2应用程序,这些变化就丢失了,服务器会重新应用axis2.xml中的定义。Axis2也提供了第三种发行包,源码发行包,该发行包可以让你自己生成这个.war文件。

  Axis2文档发行包目录结构
文档发行包包括所有的Axis2文档,它包含xdocs和javadocs。它具有以下结构:代码列表3:Axis2文档发行包
docs
      javadocs
      xdocs
  
LICENSE.txt
README.txt
release-notes.html
javadocs目录包括所有的标准Axis2 API文档,在xdocs目录还有其它文档(例如类似本文的文档)。

  Axis2和客户端
现在解释作为Web应用一部分的Axis2是如何工作的。非J2EE应用一部分的独立客户端到底是什么?在这种情况下,一个发送者可以使用Axis2的缺省属性,换句话说,没有特殊的handler等等。但是你还是有机会告诉客户端载入它自己的axis2.xml拷贝,然后根据这个配置执行。查看下一部分 – 安装测试客户端代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值