一、 前言 |
|
|
前一节我们研究了 Axiom, 了解了 axis2 的 xml 的处理机制, axis2 类似诸多 apache 开源软件,采用 xml 文件方式来配置管理,只不过 axis2 使用了本身的 Axiom 来读取配置文件。与 axis1.x 相比, axis2 部署增加了热部署及热更新的功能,这两个功能已不是什么新名词,热部署可以使 axis2 在运行时部署新的 webservice ,而热更新使得在不需要重新启动 axis2 的基础上更新已部署的 webservice 有效。
|
二、整体架构 |
|
|
|
|
< 图一 >
|
|
Scheduler :日程管理器,隔一段时间通知监听器查看部署文件。 |
|
Listener : :部署文件监听器,负责查看更新状况并实时更新系统。 |
|
Descriptor Parser :基于 Axiom ,对部署描述 xml 文件进行处理。 |
|
Deployment Engine: 部署引擎,可理解为一个部署管理中心组件,负责所有部署相关逻辑。 |
|
Axis2 Core : Axis2 的核心系统,不依赖于部署系统,同时部署系统也不依赖于核心系统。 |
|
Repository: 相当于一个部署文件的根目录,也是监听器需要监听的路径,其下有两种重要的目录, services 和 modules , services 下存放要部署的 axis2 webservice , modules 下存入 要部署的 axis2 的功能模块,如下图二 Repository 的概念有如 Axis2 Repository 所处的位置。 |
|
|
|
|
|
< 图二 >
|
|
|
三、部署描述文件 |
|
|
Axis2 的部署描述文件共分三种:
- 全局 部署 描述文件 (axis2.xml)
- Axis2 Webservice 部署 描述文件 (services.xml)
- Axis2 功能模块 部署 描述文件 (module.xml)
|
|
全局都放在 a xis2.xml 文件中,比如一些 全局参数(如是否支持热部署),支持各种协议的消息发送类等, axis2 启动时会首先找这个文件,如果在 repository 中找不到,会加载类路径下缺省的 axis2_default.xml 文件。 |
|
services.xml 用于部署用户定义的 webservice ,在 Axis1.x 中,部署自己的一下 service 是比较麻烦的, axis2 这方面改进得比较好,首先写一个自己的业务类,不需要实现任何接口,然后在 services.xml 文件对自己所要提供服务的方法设置就 ok 了 , 其典型格式如下: |
|
<serviceGroup>
<service >
<description>
The description
</description>
<parameter name="ServiceClass" locked="false"> org.apache.axis2.MyServiceImpl </parameter>
<operation name="query">
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
</serviceGroup>
|
|
最外边serviceGroup代表一组服务,其间可以容纳多个 service , service 就代表一个用户定义的一个服务, description 是该服务一个简单描述,没有什么实际意义, parameter 这里定义一个比较重要的参数 ServiceClass ,既用户自己写的提供服务的简单的 javaBean , operation 声明这个服务对外提供具体的操作, name 指操作名,注意这个操作名在自己的 ServiceClass 中必须存在这样一个 public 的方法, messageReceiver 定义这个操作的消息接收类,这个class使用的选择与用户自定义的服务运行方式有关,Axis2提供了两种主要的MEP(消息交换方式):IN-ONLY(收到请求执行某一操作),IN-OUT(收到请求执行某一操作后返回一个响应消息纵给客户端),这里选择RawXMLINOutMessageReceiver表示采用IN-OUT这种方式。
|
|
|
|
最后还有 module.xml ,这也是 axis2 一个比较有特色的地方,用户可以自己开发对 soap 消息处理的功能块,可以很方便地加入到 axis2 核心系统中,一个功能模块可以定义为全局的,请求所有服务都能执行到,也可以定义为服务级别,只有请求某个特定的服务才能执行到,或操作级别的,请求某个服务某个操作才能执行到。
|
|
|
四、静态结构 |
|
|
|
|
< 图三 > |
|
如图三部署框架主要类图及其关系, DeploymentEngine 起一个集成各功能类的作用, ArchiveFileData 代表一个部署打包的文件, AxisConfiguration 的实例存在 Axis2 启动配置的静态数据, DescriptionBuilder 负责解析 xml 文件, ArchiveReader 调用 DescriptionBuilder 而已, RepositoryListener repository 的监听类, Scheduler 和 SchedulerTask 配合按一段时间间隔对 repository 进行扫描是否改变,如果改变通过 RepositoryListener 对实施重新部署文件, WSInfoList 主要是分担一部分 RepositoryListener 的职责。
|
|
Axis2 中有两种部署服务的办法,一种服务打包文件放到 Repository 的 services 目录下,另外一种还可以用编程方法部署,比如:
|
|
DeploymentEngine developer = new DeploymentEngine(); |
|
ServiceDescription service = new ServiceDescription(); |
|
ClassLoader cls = Thread.currentThread().getContextClassLoader(); |
|
InputStream in = new FileInputStream("location of servie.xml"); |
|
developer.buildService(service,in,cls); |
|
|
五、 动态加载次序 |
|
|
|
< 图四 >
|
|
|
|
Axis2 可以单独启动提供服务, Axis2 提供了一下 org.apache.axis2.transport.http.SimpleHTTPServer 类来启动整个系统,但一般实际应用将 Axis2 和 Servlet Container 绑定在一起(我想主要是成熟的 Servlet Container 在多线程管理方面更加稳定同时也便于与 web application 进行交互),上图四就是一个 Axis2 由 Servlet 引导启动的时序,首先当然是 Servlet Container 调用 AxisServlet 的 init(ServletConfig) 方法,总的次序是:先加载 axis2.xml 全局配置,其次加载 repository 下 modules ,最后加载 services 。
转自:http://blog.csdn.net/eastbear2008/archive/2006/08/23/1108145.aspx
|
分享到:
相关推荐
Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记
Axis2版本学习笔记,CXF版学习笔记,WebServices学习笔记
axis2学习资料
AXIS学习笔记
使用Axis来开发Web services 需要准备 web 服务器,Axis API。本文使用的Web container 是Tomcat5.5, Axis API 采用版本2
Axis2学习文档
AXIS学习笔记
axisAxis2学习教程-全面学习AXISAxis2学习教程-全面学习AXIS
使用Axis2部署WebService,这是我的一点学习 笔记, 仅供初学者了解用,呵呵呵 不需要资源分的
MyEclipse下Axis2插件安装笔记
axis2在实际应用中的比较广泛的一种部署方式。同我发布的hessina接口实例一样,也是比较简单的实例。可以直接下载运行
部署WebService(eclipse-axis2)部署WebService(eclipse-axis2)部署WebService(eclipse-axis2)部署WebService(eclipse-axis2)部署WebService(eclipse-axis2)
axis2c的在windows上的安装操作步骤
axis2-1.5.1-bin.zip axis2-1.5.1-war.zip webservice部署axis所需要是包
axis2学习,自己整理的axis2学习,自己整理的axis2学习,自己整理的
对Eclipse4.3(Kepler server release2)版本配置Axis2-1.6.2,开发webservice服务接口,里面是自己配置过程中的总结和一些相关的插件压缩包,还有一份word文档是我操作的一些总结,希望对大家有所帮助。
资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了3部分 见axis2方式开发webservice(一)和 axis2方式开发webservice(二)、 axis2方式开发webservice(三)
详细描述了在Eclipse中使用Axis2插件开发Web服务并在Tomcat中部署的全过程,包括环境的配置等,比较适合初学者