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-CoordinationWS-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拷贝,然后根据这个配置执行。 查看下一部分安装测试客户端代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值