Axis2 学习笔记二 ( 部署篇 ) .
来源:互联网 发布:国家安全网络宣传周 编辑:程序博客网 时间:2024/04/28 15:59
Axis2 学习笔记二 ( 部署篇 )
熊红阳
前一节我们研究了 Axiom, 了解了 axis2 的 xml 的处理机制, axis2 类似诸多 apache 开源软件,采用 xml 文件方式来配置管理,只不过 axis2 使用了本身的 Axiom 来读取配置文件。与 axis1.x 相比, axis2 部署增加了热部署及热更新的功能,这两个功能已不是什么新名词,热部署可以使 axis2 在运行时部署新的 webservice ,而热更新使得在不需要重新启动 axis2 的基础上更新已部署的 webservice 有效。
二、整体架构< 图二 >
三、部署描述文件Axis2 的部署描述文件共分三种:
- 全局 部署 描述文件 (axis2.xml)
- Axis2 Webservice 部署 描述文件 (services.xml)
- Axis2 功能模块 部署 描述文件 (module.xml)
<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 。
- Axis2 学习笔记二 ( 部署篇 )
- Axis2 学习笔记二 ( 部署篇 ) .
- axis2 webservice学习笔记二
- 新一代Web Service 实现包 -- AXIS2 学习笔记 (二)
- Axis2学习笔记一(Axiom 篇)
- Axis2学习笔记一(Axiom 篇) .
- Axis2学习笔记
- axis2学习笔记
- Axis2学习笔记
- Axis2(Java)学习笔记
- axis2 webservice学习笔记
- axis2-webservice学习笔记
- axis2 webservice学习笔记
- Axis2: 学习笔记
- Hadoop学习笔记二 安装部署
- Hadoop学习笔记二 安装部署
- Hadoop学习笔记二 安装部署
- Hadoop学习笔记二 安装部署
- linux下各文件夹的结构说明及用途介绍
- paip.win32的internet扩展已停止工作解决大法
- linux下解压zip文件
- NYOJ 276 题 比较字母大小
- 第2题 激光,前进的方向
- Axis2 学习笔记二 ( 部署篇 ) .
- UILabel 简单实现自动换行(麻烦看完了给个评论,让我有点成就感)
- uva 10055
- 管道技巧-while read line
- ssh终端自动logout或自动退出,以及不能用root直接登录的问题
- 第3题 坐标,隐藏的线索
- 中文URL 转换
- Unity中的调试
- 第4题 图案,疯狂的猜测