通过编程扩展应用程序管理操作
可使用公共部署框架将其他逻辑添加至应用程序管理操作。其他逻辑可执行代码生成、配置操作、附加验证等等任务。本主题通过编程说明如何插入公共部署框架以扩展应用程序管理操作。
开始之前
此任务假定您对 Java™ 应用程序编程接口 (API) 有基本的了解。请参阅应用程序编程接口文档中有关 Java API 的信息。
您必须先安装 WebSphere® Application Server,才能扩展应用程序管理操作。
关于此任务
使用此示例,通过编程来扩展应用程序管理。扩展提供的任务可通过所有管理客户机(如 wsadmin 工具和管理控制台)获取,也可通过 AppManagement MBean 提供的编程 API 获取。
过程
- 将扩展定义为 Eclipse 插件,并添加 plugin.xml
文件以向部署框架注册您的扩展提供程序。
- 在 plugin.xml 文件中,为 common-deployment-framework-extensionprovider 扩展点提供扩展提供程序实现类。
- 将插件 Java 归档 (JAR) 文件放到 WebSphere Application Server 安装中的 plugins 目录。
<?xml version="1.0" encoding="UTF-8"?> <plugin id=“com.ibm.myproduct.MyExtensionProvider” name=“My Extension" version="1.0.0"> <extension point=“common-deployment-framework-extensionprovider”> <action class=“com.acme.MyExtendProviderImpl“/> </extension> </plugin>
- 提供扩展提供程序。
扩展提供程序类提供用于完成应用程序企业归档 (EAR) 文件的指定操作的步骤。在运行操作之前,部署框架将查询所有已注册扩展提供程序以获取其他步骤。会对每个提供程序传递一个步骤列表。每个提供程序会将步骤添加至该列表。首先会调用部署框架提供的缺省提供程序以使用缺省步骤填充该列表。然后会调用其他扩展提供程序。
可通过公共部署框架扩展的各个操作在 DeploymentConstants 类中被定义为常量。将在下表中描述这些操作。为了打印方便,某些操作被拆分为几行。表 1. 可扩展的 DeploymentConstants 操作. 选择要扩展的操作。 操作 描述 DeploymentConstants.CDF_OP_INSTALLJ2EE 安装 Java Platform Enterprise Edition (Java EE) EAR 文件 DeploymentConstants.CDF_OP_EDITJ2EE 编辑部署应用程序配置 DeploymentConstants.CDF_OP_UPDATEJ2EE 对应用程序应用细密度更新,如文件或模块的添加、移除或更新或者应用程序的部分更新 DeploymentConstants.CDF_OP_UNINSTALLJ2EE 卸载 Java EE 应用程序 DeploymentConstants. CDF_OP_CREATE_EAR_WRAPPERJ2EE
将应用程序安装的内容输入合并到 EAR 文件中 AppManagement MBean 负责在 WebSphere Application Server 上部署和管理 Java EE 应用程序,它将运行除了 CDF_OP_CREATE_EAR_WRAPPERJ2EE 操作之外的所有操作。 部署扩展,这些扩展将在 Deployment Manager 的 plugins 目录中扩展这些操作。
当提供给 CDF_OP_INSTALLJ2EE 操作的输入内容未打包为 EAR 文件时,wsadmin 实用程序或管理控制台将运行 CDF_OP_CREATE_EAR_WRAPPERJ2EE 操作。部署扩展,该扩展将在 wsadmin 安装的 plugins 目录中扩展 CDF_OP_CREATE_EAR_WRAPPERJ2EE 操作。
以下示例提供用于执行下列任务的扩展提供程序:- 添加其他两个用于应用程序安装操作的步骤
- 添加一个用于将输入内容合并到 EAR 文件中的步骤
package com.acme; import com.ibm.websphere.management.deployment.registry.ExtensionProvider; import com.ibm.websphere.management.deployment.core.DeploymentConstants; public class MyExtensionProviderImpl extends ExtensionProvider { public void addSteps (String type, String op, String phase, List steps) { if (op.equals (DeploymentConstants.CDF_OP_INSTALLJ2EE)) { // Add a code generation step. steps.add (0, new com.acme.CodeGenStep()); // Add a configuration step. steps.add (new com.acme.ConfigStep()); } else if (op.equals (DeploymentConstants.CDF_OP_CREATE_EAR_WRAPPERJ2EE)) { // Add an ear-wrapper step. steps.add (new com.acme.EarWrapperStep()); } } }
- 提供部署步骤实现。
扩展提供程序会添加部署步骤。该步骤包含用于在应用程序管理操作中执行其他处理的逻辑。该逻辑允许该步骤访问部署上下文和可部署对象。部署上下文提供如下信息:操作名称、配置会话标识、用于创建临时文件的临时位置、操作参数等。可部署对象将合并操作的部署内容输入。例如,可部署的对象将合并安装操作的 Java EE EAR 文件或更新操作的文件、模块或部分应用程序。
- 以下示例说明在安装期间扩展如何完全更改作为安装操作输入的 EAR 文件。该示例提供安装操作期间的部署步骤,该步骤将执行下列任务:
- 运行代码生成以生成新的 EAR 文件。
- 在 DeployableObject 类中调用 setContentPath 方法以设置新的 EAR 文件路径。缺省安装逻辑(如安装逻辑添加的步骤)将此新 EAR 文件用于配置库中的安装。
package com.acme; import com.ibm.websphere.management.deployment.core.DeploymentStep; import com.ibm.websphere.management.deployment.core.DeployableObject; public class CodeGenStep extends DeploymentStep { public void execute (DeployableObject dObject) { EARFile earFile = (EARFile)dObject.getHandle(); String newEARPath = null; // Use step specific logic to create another EAR file after code generation. … newEARPath = _context.getTempDir() + "new.ear"; dObject.setContentPath (newEARPath); } }
- 以下示例提供用于执行下列任务的部署步骤:
- 阅读输入 EAR 文件的内容。
- 处理通过上下文实例 _context 访问的配置会话。
package com.acme; public class ConfigStep extends DeploymentStep { public void execute (DeployableObject dObject) { EARFile earFile = (EARFile) dObject.getHandle(); // Use the following example code to perform the configuration. String sessionID = _context.getSessionID(); com.ibm.websphere.management.Session session = new com.ibm.websphere.management.Session (sessionID, true); // Use the configuration service to perform the configuration steps. … // Read the application configuration. Application appDD = earFile.getDeploymentDescriptor(); … String newEARPath = null; } }
以下示例提供用于合并与 EAR 文件有关的任意内容的部署步骤。应用程序管理逻辑仅接受用于部署的 EAR 文件。如果想要将 EAR 文件之外的任何内容输入至部署进程,那么扩展是必需的。
package com.acme; import com.ibm.websphere.management.deployment.core.DeploymentStep; import com.ibm.websphere.management.deployment.core.DeployableObject; public class EarWrapperStep extends DeploymentStep { public void execute (DeployableObject dObject) { Archive archive = (Archive) dObject.getHandle(); String newEARPath = null; // provide your logic to wrap the jar with the ear … newEARPath = //; // Set the new ear path back into DeploymentContext this.getContext().getContextData() .put(DeploymentContext.RETURN_Object_key, newEARPath); } }
结果
通过编程,您已经插入公共部署框架以扩展应用程序管理操作。
下一步做什么
可扩展其他应用程序管理操作,或者执行您选择的任何其他管理操作。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_cdf
文件名:tjmx_cdf.html