使用编程来准备要安装的应用程序
产品应用程序管理体系结构提供一组类,它们允许应用程序开发者收集特定于 WebSphere® Application Server 的部署信息(之后称为绑定信息)并将其存储在应用程序 EAR 文件中。然后,可使用“通过编程安装应用程序”主题中描述的应用程序管理界面将这类 EAR 文件安装到 WebSphere Application Server 配置中。本主题使用编程示例来说明如何使用绑定信息填充 EAR 文件。
开始之前
此任务假定您基本熟悉 WebSphere Application Server 编程接口和 MBean 编程。请参阅应用程序编程接口文档中的 WebSphere Application Server 编程接口和 MBean 编程。
关于此任务
完成以下任务以通过编程来准备要安装的应用程序。
过程
- 创建 AppDeploymentController。 AppDeploymentController 将 EAR 文件作为参数并创建由 AppDeploymentTask 对象(之后称为任务)表示的一系列步骤。这些任务通常会提供给部署者以收集绑定信息或通过程序处理。以下代码摘录说明如何创建 AppDeploymentController 实例:
// create preferences to pass in the locale information Hashtable prefs = new Hashtable(); prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault()); // create a controller instance for EAR file // specified by a fully-qualified path in earName AppDeploymentController flowController = AppManagementFactory.readArchive (earName, prefs);
- 获取 AppDeploymentTask 实例。 创建 AppDeploymentController
后,可循环访问它创建的任务对象。每个任务为应用程序中的各个模块或应用程序本身收集特定种类的绑定信息。任务可有以下属性和对应 getter/setter(如果适用)。有关这些属性的更多信息,请参阅 AppDeploymentTask API
的 Javadoc。
表 1. 任务属性. 下表描述 AppDeploymentController 任务可能具有的属性。 名称 描述 值 appController 用于管理任务的控制器实例。 AppDeploymentController colNames 任务列名 java.lang.String[] hasHiddenColumns 指定该任务是否有任何隐藏列。 布尔值 HiddenColumns 布尔值数组,用于指示对最终用户显示任务的工具不应显示这些列。 boolean[] HIGHEST_VERSION Public static final java.lang.String HIGHEST_VERSION static java.lang.String isSufficientlyDone 指定该任务是否有任何未指定的必需数据。 布尔值 isTaskDisabled 指定是否应显示或更改该任务。 布尔值 isTaskEmpty 指定该任务是否包含任何数据。 布尔值 isValidationEnabled 指定是否应验证该任务 布尔值 mutables 布尔值数组,用于指示正在部署该应用程序的人员能否更改特定列索引中的任务数据。 boolean[] name 唯一任务名称 java.lang.String requiredColumns 一个布尔值数组,用于指示任务列是否必须有非空值。 boolean[] taskData 二维字符串数组(表)。表的第 1 行包含任务的列标题(例如,模块名称,模块 URI、JNDI 名称等)。余下行表示特定于应用程序的信息。 java.lang.String[] taskValidateErrorMessages 验证任务时生成的错误消息 java.lang.String[] VERSION_HIGHEST public static final int VERSION_HIGHEST static int 下表列示通常由 AppDeploymentController 为 J2EE 1.2、J2EE 1.3 或者 Java™ EE 5 或更高版本应用程序创建的各个任务名称。如果该应用程序包含 WebSphere Application Server 企业扩展,那么您可能会见到更多任务。
表 2. 通常由 AppDeploymentController 为 J2EE 1.2、J2EE 1.3 或者 Java EE 5 或更高版本应用程序创建的各个任务名称. 下表提供通常由 AppDeploymentController 为 J2EE 1.2、J2EE 1.3 或者 Java EE 5 或更高版本应用程序创建的任务的名称。它还提供每个任务的描述和任务列名。 AppDeploymentTask 名称 描述 任务列名 MapRolesToUsers 允许对安全角色指定用户或组。必须将应用程序或模块中定义的每个角色映射至来自域用户注册表的用户或组。每个任务数据行表示单个安全角色。可通过使用引号 (") 分隔用户或组来对单个角色指定多个用户或组。 - role - 列示给予用户的特定功能。 角色特权授予用户和组以指定方式运行的许可权。例如,可以将用户 Joe 映射到管理员角色,这使用户 Joe 能够执行所有与管理员角色相关联的任务。仅当启用了全局安全性时才执行授权策略。
- everyone - 指定是否将每个人映射至指定角色。
- allAuthenticatedUsers - 指定是否将所有已认证的用户(无论他们在哪个领域中)映射至指定角色
- mappedUsers - 列示此应用程序内映射至指定角色的用户。
- mappedGroups - 列示此应用程序内映射至此指定角色的组。
- AllAuthenticatedInTrustedRealms - 指定是否将可信领域中的所有用户映射至指定角色。
- userAccessIds - 指定在使用 WebSphere Application Server 缺省授权引擎时用于 Java Platform Enterprise Edition 授权的用户信息。userAccessIds 的格式为 user:realm/uniqueUserID。
- groupAccessIds - 指定组信息。groupaccessIds 的格式为 group:realm/uniqueGroupID。
- Mapped users access ids - 指示映射的用户访问标识。
- Mapped groups access ids - 指示映射的组访问标识。
MapRunAsRolesToUsers 允许对 RunAs 角色指定凭证。您安装的企业 Bean 包含预定义的 RunAs 角色。需要以特定角色运行以便在与另一个企业 Bean 交互时标识的企业 Bean 使用 RunAs 角色。每个任务数据行表示单个 RunAs 角色。 - role - 将特定功能映射至用户。仅当启用了全局安全性时才执行授权策略。
- userName - 对 RunAs 角色用户指定用户名。此用户已映射至对 MapRolesToUsers 任务指定的角色。您可以通过直接把用户映射至该角色,或者把包含此用户的组映射至该角色,将用户映射至它的相应角色。
- password - 对 RunAs 用户指定密码。
BindJndiForEJBNonMessageBinding 允许对企业 Java bean (EJB) 指定 JNDI 名称。此 JNDI 名称用于从客户机程序中查找 EJB 主目录。一个任务数据行指定可为其提供 JNDI 名称的单个 EJB。 - EJBModule - 指定包含那些绑定至 JNDI 名称的企业 Bean 的 EJB 模块。
- EJB - 指定该模块包含的企业 Bean 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JNDI - 指定与 EJB 模块中的企业 Bean 相关联的 JNDI 名称。
BindJndiForEJBMessageBinding 允许对消息驱动的 Bean (MDB) 指定侦听器端口名称或激活规范的 JNDI。请确保应用程序或模块中的每个 MDB 绑定至一个侦听器端口名称或激活规范的 JNDI。每个任务数据行表示单个消息驱动的 Bean。 - EJBModule - 指定包含企业 Bean 的 Enterprise JavaBeans 模块。
- EJB - 指定应用程序中的 MDB 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- listenerPort - 对 MDB 指定侦听器端口名称。
- actSpecJNDI - 对 MDB 指定激活规范 JNDI 名称。如果 MDB 绑定至激活规范 JNDI 名称,那么还可指定目标 JNDI 名称和认证别名。
- actSpecDestinationJNDI - 对激活规范指定目标 JNDI 名称。
- actSpecAuth - 指定认证别名,该认证别名用于访问所配置 J2C 激活规范上设置的用户名和密码。
BindJndiForEJBBusiness 允许使用 EJB 模块中的业务接口对每个企业 Bean 指定 JNDI 名称绑定。每个在 EJB 模块中具有业务接口的企业 Bean 必须绑定至一个 JNDI 名称。一个任务数据行指定可为其提供 JNDI 名称的单个企业 Bean。 - EJBModule - 指定包含那些绑定至 JNDI 名称的企业 Bean 的 EJB 模块。
- EJB - 指定一个绑定至 JNDI 名称的企业 Bean 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- businessInterface - 指定 EJB 模块中的企业 Bean 业务接口。
- JNDI - 指定 EJB 模块中与企业 Bean 业务接口相关联的 JNDI 名称。
MapEJBRefToEJB 允许指定那些绑定至 ejb-ref 的 EJB 的 JNDI 名称。每个任务数据行表示模块中定义的单个 ejb-ref, EJB 3.0 模块不能包含容器管理的或 bean 管理的持久性实体 bean。如果容器管理的或 bean 管理的持久性实体 bean 打包在 Java EE 应用程序的 EJB 3.0 模块中,那么安装会失败。只能将容器管理的或 bean 管理的持久性封装在 EJB 2.1 或更低版本的模块中。
如果 EJB 引用来自于 EJB 3.0、Web 2.4 或 Web 2.5 模块,那么 JNDI 名称是可选的。如果启用了“允许自动解析 EJB 引用目标”选项,那么该 JNDI 名称对于所有模块都是可选的。运行时提供容器缺省值;如果未提供绑定,那么将自动解析 EJB 引用。
- EJB - 指定该模块包含的企业 Bean 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- referenceBinding - 指定企业 Bean 中使用的 EJB 引用的名称。
- class - 指定与此企业 Bean 相关联的 Java 类的名称。
- JNDI - 指定 EJB 模块中与该企业 Bean 相关联的 JNDI 名称
MapResRefToEJB 允许指定 WebSphere Application Server 配置中定义的一些资源的 JNDI 名称,这些资源绑定至 resource-ref。每个任务数据行表示模块中定义的单个 resource-ref。 - AppVersion - 指定应用程序的版本。
- ModuleVersion - 指定模块的版本。
- Module - 指定应用程序中的模块的名称。
- EJB - 指定包含资源引用的企业 Bean 的名称。(仅适用于 EJB 模块)
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- referenceBinding - 指定模块包含的资源引用的名称。
- targetResourceJNDI - 指定作为资源引用映射目标的资源的 JNDI 名称。
- 登录配置 - 此列仅适用于数据源和连接工厂,是指用于保护资源的认证方法。
Java 2 连接器 (J2C) 使用 DefaultPrincipalMapping 登录配置将用户映射至 J2C 认证数据条目中定义的主体。如果 login.config.name 设置为 DefaultPrincipalMapping,那么创建名为 com.ibm.mapping.authDataAlias 的属性。该属性的值由 authentication.props 设置。如果 login.config 名称未设置为 DefaultPrincipalMapping,那么 authentication.props 可以指定多个属性。
- 认证属性 - 指定登录配置使用的属性。字符串格式为:
websphere:name= <name1>,value= <value1>,description=<desc1>
可使用加号 (+) 来指定多个属性。
- 资源授权 - 指定用于保护资源的授权类型。
- 扩展数据源属性 - 对 DB2 数据库指定扩展数据源属性。可以使用这些属性来允许应用程序扩展数据源的定制属性或覆盖该数据源已存在的任何非核心属性。
MapResEnvRefToRes 允许指定 WebSphere Application Server 配置中定义的一些资源的 JNDI 名称,这些资源绑定至 resource-env-ref。每个任务数据行表示模块中定义的单个 resource-env-ref。 - Module - 指定应用程序中的模块的名称。
- EJB - 指定包含资源环境引用的企业 Bean 的名称。(仅适用于 EJB 模块)。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- referenceBinding - 指定资源环境引用的名称。此引用与一个资源相对应,该资源作为资源环境条目绑定到应用程序服务器的 JNDI 名称空间中。
- resEnvRef.type - 指定与该资源环境引用相关联的类型。
- JNDI- 指定作为资源环境引用映射目标的资源环境条目的 JNDI 名称。
MapSharedLibForMod 允许使所定义共享库与应用程序或 Web 模块相关联。共享库是由一个或多个应用程序使用的外部 Java 归档 (JAR) 文件。通过使用共享库,就可以使部署在一个服务器上的多个应用程序能够使用单个库,而不是使用同一个库的多个副本。在使共享库与应用程序或模块相关联之后,该应用程序或模块的类装入器就会装入那些共享库所表示的类,并且将使那些类可供该应用程序或模块使用。每个任务数据行表示单个应用程序或 Web 模块。 - application - 指定要安装的应用程序的名称。
- module - 指定与共享库相关联的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- sharedLibraries - 指定与应用程序或模块相关联的共享库文件的名称
SharedLibRelationship 允许对企业应用程序中的模块引用的共享库指定关系标识和组合单元名称。安装企业应用程序时,该产品会为所指定业务级应用程序中的每个共享库关系创建组合单元。每个任务数据行表示单个应用程序或 Web 模块。 - module - 指定与共享库相关联的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- relationshipIdentifiers - 对模块共享库关系指定共享库资产或组合单元标识。字符串格式为:
assetname=<assetName> or cuname=<cuName>
可使用加号 (+) 来指定多个关系。
- compositionUnit - 对共享库关系指定组合单元名称。该产品使用此值来命名它为业务级应用程序中的共享库关系创建的组合单元。组合单元名称按位置与关系字段中指定的资产或组合单元标识的名称匹配。
- matchTarget - 指定该产品是否将共享库关系的组合单元与业务级应用程序映射至同一部署目标。下列值对此列有效:
- AppConstants.YES_KEY,指示您想要该产品将共享库关系的组合单元与业务级应用程序映射至同一部署目标。
- AppConstants.NO_KEY,指示您不希望该产品将共享库关系的组合单元与业务级应用程序映射至同一部署目标。
CtxRootForWebMod 允许在 WebSphere Application Server 部署目标上安装应用程序期间或之后对 Web 模块指定上下文根。每个任务数据行表示单个 Web 模块。 - webModule - 指定要安装的或安装后要查看的应用程序中的 Web 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- contextRoot - 指定 Web 应用程序的上下文根 (WAR)。在应用程序组装期间,在应用程序部署描述符中为每个 Web 模块都定义了上下文根。上下文根与已定义的 Servlet 映射(包含在 WAR 文件中)共同组成用户访问该 Servlet 时需要输入的完整 URL。例如,如果上下文根是 /gettingstarted,并且 Servlet 映射是 MySession,那么 URL 是 http://host:port/gettingstarted/MySession。
MapInitParamForServlet 允许在 WebSphere Application Server 部署目标上安装应用程序期间或之后对 Web 模块中的 servlet 指定初始参数值。缺省情况下,系统会使用 Web 模块的 web.xml 文件中 <init-param> 语句内指定的 <param-value> 值。每个任务数据行表示单个 servlet。 - module - 指定要安装的或安装后要查看的应用程序中的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- servlet - 对应用程序内的 servlet 指定唯一名称。必须将 servlet 打包成 Web 应用程序归档 (WAR) 文件或 Web 模块,这样才能将其部署到应用程序服务器上。Servlet 在启用了 Java 的 Web 服务器上运行并扩展 Web 服务器的功能,其方式类似于 applet 在浏览器中运行并扩展浏览器的功能。
- name - 指定要传递至 Web 模块 servlet 过滤器的 init 方法的初始参数的名称。web.xml 文件中的以下示例 servlet 过滤器语句指定属性的初始参数名称:
<init-param> <param-name>attribute</param-name> <param-value>tests.Filter. DoFilter_Filter.SERVLET_MAPPED </param-value> </init-param>
- value - 指定要分配给某个初始参数的值,该初始参数传递至 Web 模块 servlet 过滤器的 init 方法。web.xml 文件中的以下示例 Servlet 过滤器语句对初始参数属性指定初始参数值 tests.Filter.DoFilter_Filter.SERVLET_MAPPED:
<init-param> <param-name>attribute</param-name> <param-value>tests.Filter. DoFilter_Filter.SERVLET_MAPPED </param-value> </init-param>
- description - 指定有关初始参数的信息。
MapEnvEntryForEJBMod 允许配置 Enterprise JavaBeans™ (EJB) 模块(例如,实体、会话或消息驱动的 Bean)的环境条目。每个任务数据行表示 EJB 模块中的单个环境条目。 - module - 指定 EJB 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- EJB - 指定该模块包含的企业 Bean 的名称。
- name - 指定要编辑或查看的环境条目的名称。该环境条目是 EJB 模块中的 env-entry 属性。
- type - 对 EJB 模块中的 env-entry 属性定义的环境条目指定数据类型。
- description - 指定有关该环境条目的信息。
- value - 对 EJB 模块中的 env-entry 属性定义的环境条目指定可编辑值。
MapEnvEntryForWebMod 允许配置 Web 模块(例如,servlet 和 JavaServer Pages (JSP) 文件)的环境条目。每个任务数据行表示 Web 模块中的单个环境条目。 - module - 指定 Web 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- name - 指定要编辑或查看的环境条目的名称。该环境条目是 Web 模块中的 env-entry 属性。
- type - 对 Web 模块中的 env-entry 属性定义的环境条目指定数据类型。
- description - 指定有关该环境条目的信息。
- value - 对 Web 模块中的 env-entry 属性定义的环境条目指定可编辑值。
MapMessageDestinationRefToEJB 允许指定 J2C 受管对象的 JNDI 名称,以将消息目标引用绑定至消息驱动的 Bean。每个任务数据行表示模块中的单个消息目标引用。 - module - 指定 EJB 模块的名称。
- EJB - 指定该模块包含的消息驱动的 Bean (MDB) 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- messageDestinationObject - 指定消息目标引用或消息目标链接(如果提供目标链接)的名称
- JNDI - 指定所引用消息目标 bean 的目标 JNDI。如果提供了消息目标链接,那么此字段缺省为该消息目标链接所引用的消息驱动的 Bean 的目标 JNDI。
DataSourceFor10EJBModules 允许对用于 EJB 模块的缺省数据源指定 JNDI 名称,该 EJB 模块包含 EJB1.x bean。每个任务数据行表示单个 EJB 模块。 - EJBModule - 指定包含 1.x 企业 Bean 的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JNDI - 指定 EJB 模块的缺省数据源的 JNDI 名称。
- userName - 指定用户名,该用户名与密码一起构成用于保护数据源的认证别名。
- password - 指定密码,该密码与用户名一起构成用于保护数据源的认证别名。
- 登录配置 - 指定用于保护数据源的认证方法。
- 认证属性 - 指定登录配置使用的属性。字符串格式为:
websphere:name= <name1>,value=<value1>, description=<desc1>
可使用加号 (+) 来指定多个属性。
DataSourceFor20EJBModules 允许对用于 EJB 模块的缺省连接工厂指定 JNDI 名称,该 EJB 模块包含 EJB2.x bean。每个任务数据行表示单个 EJB 模块。 - EJBModule - 指定包含 1.x 企业 Bean 的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JNDI - 指定 EJB 模块的缺省数据源的 JNDI 名称。
- 资源授权 - 指定用于保护资源的授权类型。有效值为:
和AppConstants.APPDEPL_CMPBINDING_ RESAUTHTYPE_CONTAINER
.AppConstants.APPDEPL_CMPBINDING_ RESAUTHTYPE_PER_CONNECTION_FACTORY
- 登录配置 - 指定用于保护数据源的认证方法。
- 认证属性 - 指定登录配置使用的属性。字符串格式为:
websphere:name= <name1>,value=<value1>, description=<desc1>
可使用加号 (+) 来指定多个属性。
- 扩展数据源属性 - 对 DB2 数据库指定扩展数据源属性。
可以使用这些属性来允许应用程序扩展数据源的定制属性或覆盖该数据源已存在的任何非核心属性。
DataSourceFor10CMPBeans 允许指定数据源的 JNDI 名称,该数据源将用于带有容器管理的持久性的 EJB1.x bean。每个任务数据行表示单个 EJB。 - EJBModule - 指定包含 1.x 企业 Bean 的模块的名称。
- EJB - 指定该模块包含的企业 Bean 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JNDI - 指定 EJB 模块的缺省数据源的 JNDI 名称。
- userName - 指定用户名,该用户名与密码一起构成用于保护数据源的认证别名。
- password - 指定密码,该密码与用户名一起构成用于保护数据源的认证别名。
- 登录配置 - 指定用于保护数据源的认证方法。
- 认证属性 - 指定登录配置使用的属性。字符串格式为:
websphere:name= <name1>,value=<value1>, description=<desc1>
可使用加号 (+) 来指定多个属性。
DataSourceFor20CMPBeans 允许指定连接工厂的 JNDI 名称,该连接工厂将用于带有容器管理的持久性的 EJB2.x bean。每个任务数据行表示单个 EJB。 - EJBModule - 指定包含 1.x 企业 Bean 的模块的名称。
- EJB - 指定该模块包含的企业 Bean 的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JNDI - 指定 EJB 模块的缺省数据源的 JNDI 名称。
- 资源授权 - 指定用于保护资源的授权类型。有效值为:
和AppConstants.APPDEPL_CMPBINDING_ RESAUTHTYPE_CONTAINER
.AppConstants.APPDEPL_CMPBINDING_ RESAUTHTYPE_PER_CONNECTION_FACTORY
- 登录配置 - 指定用于保护数据源的认证方法。
- 认证属性 - 指定登录配置使用的属性。字符串格式为:
websphere:name= <name1>,value=<value1>, description=<desc1>
可使用加号 (+) 来指定多个属性。
- 扩展数据源属性 - 对 DB2 数据库指定扩展数据源属性。
可以使用这些属性来允许应用程序扩展数据源的定制属性或覆盖该数据源已存在的任何非核心属性。
MapWebModToVH 允许对 Web 模块指定虚拟主机。每个任务数据行表示应用程序中要对其收集虚拟主机信息的一个 Web 模块。Web 模块可以安装在同一虚拟主机上,也可以分散安装在多个虚拟主机上。每个任务数据行表示单个 Web 模块。 - webModule - 指定要安装的或安装后要查看的应用程序中的 Web 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- virtualHost - 指定 Web 模块当前映射至的虚拟主机的名称。
不要对具有相同上下文根并部署在属于同一节点的目标上的不同 Web 模块指定同一个虚拟主机,即使那些 Web 模块包含在不同应用程序中亦如此。指定同一个虚拟主机将导致验证错误。
EnsureMethodProtectionFor10EJB 允许指定是否应使 EJB1.x 模块的所有不受保护方法不可访问。每个任务行表示单个 EJB1.x 模块。 - EJBModule - 指定包含 EJB2.x bean 的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- method.denyAllAccessPermission - 指定下列其中一个访问许可权:
- AAppConstants.YES_KEY,指示您要通过使其对用户不可访问(不管用户的访问许可权如何)来保护此 EJB 模块。
- AppConstants.NO_KEY,指示您想要使此 EJB 模块对具有相应访问许可权的用户可访问。
EnsureMethodProtectionFor20EJB 允许对 EJB 模块中的 EJB2.x bean 的不受保护方法指定保护级别。每个任务数据行对一个 EJB 模块指定方法保护。 - EJBModule - 指定包含 EJB2.x bean 的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- method.protectionType - 指定下列其中一个保护方法:
- AppConstants.APPDEPL_METHOD_PROTECTION_UNCHECK,指示您不希望应用程序服务器针对 EJB 模块验证访问许可权。这样,每个人都能够访问该 EJB 模块。
- AppConstants.APPDEPL_METHOD_PROTECTION_EXCLUDE,指示您想要通过使其对用户不可访问(不管用户的访问许可权如何)来保护此 EJB 模块。
AppDeploymentOptions 允许指定各种特定于部署的选项。此任务只有 2 行。第 1 行指定选项名称,第 2 行包含对应的选项值。下列各值是对这些选项有效的值(除非在选项描述中另行指示): - AppConstants.YES_KEY,指示您想要使用此部署选项。
- AppConstants.NO_KEY,指示您不希望使用此部署选项。
可指定的选项名称为: - preCompileJSPs - 指示是否预编译 JavaServer Pages 文件。
- installed.ear.destination - 指定希望安装企业归档 (EAR) 文件的目录。此选项的值是标准目录路径,例如,profile_root/installedApps/mycell/myapp.ear
- distributeApp - 指示应用程序管理组件是否分发应用程序二进制文件。
- useMetaDataFromBinary - 指示运行时使用的元数据(例如,部署描述符、绑定和扩展)是否来自 EAR 文件。
- deployejb - 指定是否在安装期间运行 EJBDeploy 工具。
- appname - 指定要使用这些选项进行部署的应用程序的名称。
- createMBeansForResources - 指示应用程序在部署目标上启动时,是否为应用程序中定义的所有资源(例如,servlet、JavaServer Pages (JSP) 文件和企业 Bean)创建 Mbean。
- reloadEnabled - 指示是否在应用程序的文件系统中扫描已更新文件,以便动态重新装入更改。
- reloadInterval - 指定在应用程序的文件系统中扫描已更新文件的时长(以秒计)。对此选项指定的值是大于零的整数。
- eployws - 指定是否在部署期间运行 wsdeploy 工具。
- validateinput - 指定该产品在应用程序安装或更新期间是否检查指定的应用程序引用,如果启用验证,那么系统是针对错误引用发出警告还是使操作失败。有效值为 AppConstants.APPDEPL_VALIDATE_INSTALL_OFF、AppConstants.APPDEPL_VALIDATE_INSTALL_WARM 和 AppConstants.APPDEPL_VALIDATE_INSTALL_FAIL。
- processEmbeddedConfig - 指定是否应处理嵌入式配置。嵌入式配置由 resource.xml 和 variables.xml 之类的文件组成。
- filepermission - 对已安装应用程序的已展开至指定目录的应用程序二进制文件指定访问许可权。
- blaname - 指定该产品是使用您要安装的企业应用程序来创建新的业务级应用程序,还是使企业应用程序成为现有业务级应用程序的组合单元
- autolink - 指定该产品是对所有不完整 EJB 引用目标分配缺省 JNDI 值,还是自动解析所有不完整 EJB 引用目标。
JSPReloadForWebMod 允许配置 Web 模块(例如,JavaServer Pages (JSP) 文件)的类重新装入,并允许选择要与此应用程序配合使用的 JSF 实现。每个任务数据行表示单个 Web 模块。 - webModule - 指定要安装的或安装后要查看的应用程序中的 Web 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- enableJSPClassReloading - 指定在更新 JSP 文件时是否启用类重新装入。
- JSPReloadInterval - 指定该产品在应用程序的文件系统中进行扫描以检查已更新 JSP 文件的频率(以秒计)。
EJBDeployOptions 允许对企业 Bean (EJB) 部署工具指定选项。该工具生成运行企业 Bean 文件所需的代码。您可以指定运行 EJB 部署工具时要使用的其他类路径、远程方法调用编译器(RMIC)选项、数据库类型和数据库模式名。 - deployejb.classpath - 指定一个或多个 ZIP 文件或 Java 归档 (JAR) 文件的类路径,要安装的 JAR 或 EAR 文件将依赖于这些文件。
- deployejb.rmic - 指定 EJB 部署工具是否将 RMIC 选项传递至远程方法调用编译器。请参阅 RMI 工具文档以了解有关这些选项的信息。下列值对此列有效:
- AAppConstants.YES_KEY,允许 EJB 部署工具将 RMIC 选项传递至远程方法调用编译器。
- AppConstants.NO_KEY,阻止 EJB 部署工具将 RMIC 选项传递至远程方法调用编译器。
- deployejb.dbtype - 指定数据库供应商的名称,此名称用于确定数据库列类型、映射信息、Table.sql 和其他信息。如果指定数据库类型,那么先前为所有 EJB 模块定义的后端标识都将被所选数据库类型覆盖。如果要对个别 EJB 模块启用后端标识,请不要对此列指定值。
- deployejb.dbschema - 指定要创建的模式的名称。EJB 部署工具将数据库信息保存在 JAR 或 EAR 文件内的模式文档中,这意味着不需要再次指定这些选项。这还意味着,在生成 JAR 或 EAR 时必须定义正确的数据库,这是因为此后就不能进行更改了。如果模式名包含空格,那么必须将整个名称引在双引号中。例如:
"my schema"
- deployejb.dbaccesstype - 对支持用于 Java 的结构化查询语言 (SQLJ) 的 DB2® 数据库指定数据库访问类型。使用 SQLJ 来开发一些连接至 DB2 数据库的数据访问应用程序。SQLJ 是一组编程扩展,支持使用 Java 编程语言来嵌入一些提供 SQL(结构化查询语言)数据库请求的语句。
- deployejb.SQLJclasspath - 指定 DB2 SQLJ 工具 sqlj.zip 文件的类路径。在应用程序安装期间,该产品使用此类路径来运行 DB2 SQLJ 工具并生成 SQLJ 概要文件(.ser 文件)。
- deployejb.JDKcompliancelevel - 指定在添加要编译的应用程序源文件时要使用的 Java Developer Kit 编译器编译级别。
JSPCompileOptions 允许指定 JavaServer Pages (JSP) 编译器要使用的各个选项。 - webModule - 指定应用程序中的 Web 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JSPclasspath - 指定在应用程序安装期间编译 JSP 文件时 JSP 编译器要使用的临时类路径。应用程序安装完成时不会保存此类路径,应用程序运行时也不会使用此路径。此类路径仅用于标识应用程序外部的资源,这些资源是进行 JSP 编译时所需的,且在安装应用程序后通过其他方式(例如,共享库)进行标识。
在 Network Deployment 配置中,此类路径是特定于 Deployment Manager 机器的。
- useFullPackageNames - 指定 JSP 引擎是否使用完整包名来生成并装入 JSP 类。如果使用完整包名,那么可在 web.xml 文件中将预编译 JSP 类文件配置为 servlet,而不必使用 jsp-file 属性。未使用完整包名时,所有 JSP 类都将在同一个包中生成,其优点在于文件系统路径较小。
- JDKSourceLevel - 指定 Java 编译器在编译 JSP Java 源时所在的源级别。如果对此列指定值,请在级别编号中省略小数点。例如,指定 15 来表示 JDK 级别 1.5。
- disableJSPRuntimeCompilation - 指定是否决不应在运行时转换或编译 JSP 文件,即使 .class 文件不存在时也是如此。下列值对此列有效:
- AAppConstants.YES_KEY,指示您想要禁用 JSP 运行时编译。
- AppConstants.NO_KEY,指示您不希望禁用 JSP 运行时编译。
MapModulesToServers 允许对应用程序中的模块指定目标服务器或集群。每个任务数据行表示应用程序中的一个模块。服务器目标指定为 WebSphere:cell=cellName,node=nodeName,server=serveName,集群目标指定为 WebSphere:cell=cellName,cluster=clusterName。可通过使用“+”定界来对给定模块指定多个目标。每个任务数据行表示单个模块。 - Module - 指定应用程序中的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- server - 对此模块指定目标服务器或集群。
CorrectUseSystemIdentity 允许管理应用程序中的 Enterprise JavaBeans™ (EJB) 方法的系统标识属性。 - role - 指定用于此 EJB 方法的 RunAs 角色。
- userName - 对 RunAs 角色用户指定用户名。该用户名与您对该角色选择的 RunAs 角色配合使用。
- password - 指定与用户注册表中的用户名相关联的密码。
CorrectOracleIsolationLevel 允许对资源引用的 Oracle 类型提供程序指定隔离级别,这些资源引用映射至一些资源,这些资源正在使用一个正在执行后端处理的 Oracle 数据库。每行表示一个映射至 Oracle 数据库资源的资源引用。 - Module - 指定应用程序中的模块的名称。
- resourceRef - 指定资源引用的名称
- JNDI - 作为资源引用的映射目标的资源的 JNDI 名称。
- isolationLevel - 指定要用于 Oracle 类型提供程序的隔离级别。可对此列指定的两个值为:
- rc,指示 JDBC 已落实读取隔离级别。
- s,指示 JDBC 可序列化隔离级别。
ActSpecJNDI 允许为嵌入式资源适配器模块的 JCA 对象提供 JNDI 名称。 - Module - 指定应用程序中的模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- JCA 对象 - 对 J2C 连接工厂、受管对象或激活规范指定 JCA 对象的名称。
- JNDI- 对 JCA 对象指定 JNDI 名称。
BackendIdSelection 允许对包含容器管理的持久性 (CMP) bean 的企业 Bean Java 归档 (JAR) 模块更改后端标识。企业 Bean JAR 模块可以支持多后端配置,如使用应用程序组装工具所指定的那样。如果应用程序包含 EJB 模块,并且已使用组装工具对这些 EJB 模块生成用于多后端数据库的部署代码,那么此任务很有用。 - Module - 指定应用程序中的 EJB 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- ID - 用于表示后端数据库的现有后端标识。
- currentID - 指定用于表示要使用的后端数据库的新后端标识
MetadataCompleteForModules 允许每个 EJB 3.0 模块或 Web 2.5 模块写出完整部署描述符,包括注释中的部署信息。然后,在完成时,系统会对模块的部署描述符进行标记。每个任务数据行表示单个模块。 - module - 指定 EJB 3.0 或 Web 2.5 模块的名称。
- uri - 统一资源标识 (URI) 指定模块归档相对于应用程序 EAR 根目录的位置。
- metadataComplete - 指定是否将完整模块部署描述符(包括注释中的部署信息)写至 XML 格式。如果模块的 metadataComplete
设置为 true,那么 WebSphere 会写出完整部署描述符,包括注释中的部署信息。下列值对此列有效:
- AppConstants.YES_KEY,指示 EJB 3.0 模块或 Web 2.5 模块可写出完整部署描述符(包括注释中的部署信息)。
- AppConstants.NO_KEY,指示 EJB 3.0 模块或 Web 2.5 模块无法写出完整部署描述符(包括注释中的部署信息)。
各个任务中的 URI 列使用其值所指示的格式唯一标识应用程序中的模块,其中 moduleURI 是应用程序的部署描述符中定义的模块文件名,ddURI 是模块内部署描述符的 URI(对于标准部署描述符)或模块备用部署描述符的 URI(按应用程序的部署描述符中的定义)。例如,如果应用程序的 MyWeb.war 中包含 Web 模块,并且该模块使用标准部署描述符,那么此模块的各个任务中的 URI 列的值为 MyWeb.war,WEB-INF/web.xml。因此,URI 列值始终保证模块具有唯一标识。
以下代码摘录说明如何从 AppDeploymentController 中获取任务:
AppDeploymentTask task =flowController.getFirstTask(); while (task != null) { // manipulate task data as necessary task = flowController.getNextTask(); }
- 处理任务数据
通过使用任务名称、任务列名和要为其提供绑定信息的 J2EE 工件,可修改任务数据(如果对应列标记为可变)。以下样本代码说明如何为特定任务提供绑定信息。在此示例中,我们将对安全角色指定用户:假定该应用程序具有名为 Role1 的安全角色,并且您需要对该角色分配用户 User1 和 User2:
if (task.getName().equals ("MapRolesToUsers") && !task. isTaskDisabled()) { // find out column index for role and user column // refer to the table to find the column names int roleColumn = -1; int userColumn = -1; String[] colNames = task.getColumnNames(); for (int i=0; i < colNames.length; i++) { if (colNames[i].equals ("role")) roleColumn = i; else if (colNames[i].equals ("role.user")) userColumn = i; } // iterate over task data starting at row 1 as row0 is // column names String[][]data = task.getTaskData(); for (int i=1; i < data.length; i++) { if (data[i][roleColumn].equals ("Role1")) { data[i][userColumn]="User1|User2"; break; } } // now that the task data is changed, save it back task.setTaskData (data); }
可在各个任务中使用类似逻辑来指定所有其他类型的绑定信息,例如,EJB 的 JNDI 名称、Web 模块的虚拟主机名称等。任务信息和样本代码不允许收集应用程序客户机模块的绑定信息。您需要使用随 WebSphere Application Server 交付的客户机配置工具来配置应用程序客户机。
- 保存 EAR 文件并获取安装选项。
在各个任务中提供所有必需绑定信息后,应将任务数据保存回 EAR 文件,以便可将所填充的 EAR 文件安装到 WebSphere Application Server 配置中。除了存储在 EAR 文件中的绑定信息外,还有一些由任务收集的其他部署选项,例如,AppDeploymentOptions、EJBDeployOptions 和 MapModulesToServers。这些选项未保存在 EAR 文件中,但在 WebSphere Application Server 配置中安装应用程序时应传递这些选项。根据需要处理任务数据并保存 EAR 文件后,可通过散列表的形式从 AppDeploymentController 中获取这些选项。或者,可按“安装应用程序”部分或 com.ibm.websphere.management.application.AppManagement 接口的 installApplication API 的 Javadoc 中所述,在应用程序安装期间直接传递这些选项。
以下代码说明如何将任务数据保存到 EAR 文件中并获取所生成的安装选项:
// the following line of code saves the task data // in the EAR file specified as earName in step 1 flowController.saveAndClose(); // get the installation options Hashtable options = flowController.getAppDeploymentSavedResults();
下一步做什么
使用编程来安装应用程序。


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