Axis2部署模型

来源:互联网 发布:js 添加li 编辑:程序博客网 时间:2024/05/16 00:14

对于Axis服务,描述符文件是service.xml,而对于Axis模块,描述符文件是module.xml。

  • 热部署是指在系统启动并运行的情况下部署新服务的能力。例如,假定您有两个服务——service1 和 service2——已启动并运行,现在要在不用关闭系统的情况下部署名为 service3 的新服务。部署 service3 就是一个热部署场景。作为系统管理员,如果不喜欢服务的热部署,则可以通过更改名为 axis2.xml 的 Axis2 全局配置文件,将全局配置参数更改为以下所示,从而关闭此功能:<parameter name="hotdeployment">false</parameter>
  • 热更新是指在不关闭系统的情况下更改现有 Web 服务的能力。这是一个重要的特性,是测试环境中需要的一个功能。不过,在实时系统中使用热更新并不明智,因为这可能导致系统进入未知状态。此外,还可能会丢失该服务的现有服务数据。为了防止出现这种情况,Axis2 缺省将热更新参数设置为 FALSE。如果希望使用此功能,请按照以下所示更改配置参数,从而启用此功能:<parameter name="hotupdate">true</parameter>

Axis2 存储库实际上就是文件系统中具有特定结构的目录。它可以位于本地,也可以位于远程计算机上。之所以引入存储库概念,目的是为了方便地支持基于存档的热部署功能。

存储库目录包含两个主要子目录,分别名为 servicesmodules。还可能有一个可选的子目录,名为 lib。如果希望部署服务,需要将服务存档文件放入 services 目录中。类似地,如果希望部署模块,请将模块存档文件放入 modules 目录。对于 lib 目录,要将其作为放置对服务和模块公用的第三方库的位置。


Axis2 中有三种类型的描述符或配置文件:

  • 全局描述符 (axis2.xml)
  • 服务描述符 (services.xml)
  • 模块描述符 (module.xml)

在全局描述符中,所有系统级的配置都在 axis2.xml 中给出,包括以下内容:

  • 参数
  • 传输发送方
  • 传输侦听器
  • 阶段
  • 全局模块

服务配置文件包含以下内容:

  • 服务级别的参数
  • 服务的描述
  • 消息接收方
  • 需要作为 Web 操作(服务中的操作)公开的操作
  • 服务级别的模块

模块描述符文件 (module.xml) 包含将模块插入到系统中所需的配置数据。主要配置包括以下方面:

  • 处理程序及其阶段规则
  • 模块参数

务必注意,module.xml 还可能包含以下元素:

  • 关于模块的描述(及其实现的规范)
  • 端点(对于可靠消息传递的情况,就是类似于 create sequence 的端点)

在 Axis2 中,可采用三种主要方式部署服务:

  • 将服务存档文件放入存储库中。
  • 使用存档文件以编程方式创建服务。
  • 将服务作为传统 Java 对象(Plain Old Java Object,POJO)部署。

在 Axis2 中,部署服务的最常用方法是直接将服务存档文件复制或放置到存储库中(services 目录)。如果使用基于 Axis2 WAR 文件的分发版本,则有两个选择:

  • 手动将存档文件放置到存储库中。
  • 使用 Web 控制台上载服务。

以编程方式部署并非用户需求,而是模块创建者的需求,因为某些模块要求 Web 服务的部署提供模块的全部功能。若要以编程方式创建服务,需要使用 services.xml、类加载器(可用于加载您的类文件)和AxisConfiguration。此方法的优势在于,您并不需要将服务存档文件复制到存储库中,而且仅在运行时服务才可见。清单 1 可帮助您形成对编程服务部署方法的基本认识。

清单 1. 编程服务部署
AxisConfiguration axisConfig; // you need to have reference to AxisConfiguration File file = new File("Location of the file"");ClassLoader clsLoader = new URLClassLoader(new URL[]{file.toURL()});InputStream in = new FileInputStream("location of service.xml");AxisService service = DeploymentEngine.buildService(in, clsLoader, axisConfig);

使用 Java 类部署服务是 Axis2 中提供的一项使用非常方便的功能,在这种情况下没有必要生成服务存档文件或 services.xml。唯一的要求是,必须在创建服务前将 Java 类放入类路径中。在运行时,可以由模块或服务创建新服务并进行部署。在 Axis2 中部署 POJO 仅需要三行代码,如清单 2 中所示。

清单 2. 在 Axis2 中部署 POJO
AxisService service = AxisService.createService( MyService.class.getName(), axisConfig, RPCMessageReceiver.class);axisConfig.addService(service);

0 0
原创粉丝点击