级别: 初级 Ajay Apte, , IBM, Austin,Texas
2003 年 11 月 01 日 本系列文章的第六部分演示了如何使用 WebSphere Application Server V5 增强的应用程序管理功能程序化地管理 J2EE 应用程序。
©IBM版权所有,2003年。保留所有权利。
引言
WebSphere®Application Server V5中的应用程序管理特征为安装和管理 J2EE 应用程序提供了Java™programmatic接口。WebSphere Application Server V5 是一个遵循 J2EE 1.3规范的应用程序服务器,因而它支持部署遵循 J2EE 1.3 规范以及 J2EE 1.2规范的应用程序。WebSphere Application Server所提供的管理功能通过它的管理程序公开:wsadmin 脚本接口和基于 Web的管理控制台。本文将着重讲解管理 J2EE 应用程序的程序化接口。
虽然本文是独立成篇的,但是您还是应该通过这一系列文章的
第一部分和
第二部分来熟悉 WebSphere Application Server 管理基础,通过
第五部分来了解更多关于 WebSphere Application Server 构件与 J2EE 应用程序不同的程序化配置的信息。
WebSphere Application Server Javadoc也是对这个主题很有帮助的一个文档,其中包含关于 com.ibm.websphere.management.application 包的信息,所有的应用程序管理 API 都在此包中。
应用程序准备
J2EE 应用程序和模块包括一个基于 XML 的部署描述符,它指定各种与应用程序或模块有关的构件(比如 EJB 定义、安全性角色定义、ejb-ref、resource-ref 等等)。这些构件定义了应用程序所用的未解析引用。J2EE 规范需要把这些构件映射到特定于 J2EE 平台(例如特定于 WebSphere)的信息,这种映射是在这样的平台上部署 J2EE 应用程序时完成的。
作为 WebSphere Application Server 产品的一部分安装的应用程序装配工具(Application Assembly Tool)以及 WebSphere 系统管理提供的应用程序管理支持,简化了这些特定于 WebSphere 的信息的收集。此信息可用于解析定义在 J2EE 应用程序的各种描述符中的引用,它存储在该应用程序的 EAR 文件中,并且与部署描述符放在一起。图1展示了 EAR 文件的结构,其中包含了特定于 WebSphere 的部署信息。
图1. 包含特定于 WebSphere 的部署信息的 EAR 文件
WebSphere 应用程序管理基础结构提供了一些类,它允许开发人员收集特定于 WebSphere 的部署信息(以下称为绑定信息),并且将其存储在应用程序EAR 文件中。然后可以把这样的 EAR 文件装入 WebSphere配置(通过本文后面
安装应用程序一节中所描述的应用程序管理接口。本节的剩余部分将通过一个编程示例来说明如何用绑定信息来填充 EAR 文件。
应用程序准备过程中的主要步骤有:
-
创建 AppDeploymentController 实例
-
获取 AppDeploymentTask 实例
-
在必要时操纵任务数据
-
将任务数据存储到 EAR文件中并且获取安装选项
1. 创建 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);
2. 获取 AppDeploymentTask 实例
在创建了 AppDeploymentController之后,您就可以遍历它创建的任务对象。每个任务都为应用程序中的不同模块或应用程序本身收集一种特定的绑定信息。任务有下列属性(和相应的 getters/setters(在适当的时候)):
|
属性
|
描述
| | name | 一个惟一的任务名。 | | taskData | 一个二维的字符串数组(表)。表的第一行包含任务的列标题(例如,模块的名称、模块 URI、JNDI 等等)。其余的行表示特定于应用程序的信息。 | | requiredColumns | 一个布尔型的数组,指示任务列是否必须有非空值。 | | mutableColumns | 一个布尔型的数组,指示特定列索引中的数据是否可以由部署者进行更改。 | | isTaskDisabled | 一个布尔值,指示任务是否应该考虑进行操纵。 |
下表列出的各种任务名一般是由 AppDeploymentController 为某个 J2EE 1.3(和 J2EE 1.2)应用程序创建的。如果该应用程序包含 WebSphere企业扩展,您就可以看到更多的任务。
|
AppDeploymentTask 名
|
描述
|
任务列名
| | MapRolesToUsers | 允许您指定安全性角色的拥护和组。每行任务数据都表示一个安全性角色。任务的多个用户/组用“|”隔开。某些特定的角色列(比如
role.everyone 、
role.all.auth.user )的可能值有
AppConstants.YES_KEY 或
AppConstants.NO_KEY 。
| role、role.everyone, role.all.auth.user、role.user, role.group | | MapRunAsRolesToUsers | 允许您指定 run-as角色的凭证。每行任务数据都表示一个运行时角色。 | role、userName、password | | BindJndiForEJBNonMessageBinding | 允许您指定企业 Java bean(EJB)的 JNDI 名。该 JNDI 名可用于从客户端程序查询 EJB Home。一行任务数据指定一个可以提供 JNDI 名的 EJB。 | EJBModule、EJB、uri、JNDI | | BindJndiForEJBMessageBinding | 允许您指定消息驱动 bean(MDB)的侦听器端口名。每行任务数据都表示一个 MDB。 | EJBModule、EJB、uri、listenerPort | | MapEJBRefToEJB | 允许您指定绑定到 ejb-ref 的 EJB 的 JNDI名。每行任务数据都表示一个在 EJB 或 Web 模块中定义的 EJB 引用。 | module、EJB、uri、referenceBinding、class、JNDI | | MapResRefToEJB | 允许您指定在 WebSphere 配置中定义、绑定到 resource-ref 的 EJB 的 JNDI名。每行任务数据都表示一个在 EJB 或 Web 模块中定义的 resource-ref 。 | AppVersion、ModuleVersion、module、EJB、uri、referenceBinding、resRef.type、oracleRef、JNDI | | MapResEnvRefToRes | 允许您指定在 WebSphere 配置中定义、绑定到 resource-env-ref 的资源的 的 JNDI名。每行任务数据都表示一个在 EJB 或 Web 模块中定义的 resource-env-ref。 | module、EJB、uri、referenceBinding、resEnvRef.type、JNDI | | DataSourceFor10EJBModules | 允许您为用作包含 EJB1.xbean 的EJB 模块的缺省数据资源指定 JNDI名。每行任务数据都表示一个 EJB 模块。 | AppVersion、EJBModule、uri、JNDI、userName、password | | DataSourceFor20EJBModules | 允许您为用作包含 EJB2.xbean 的 EJB 模块的缺省连接工厂指定 JNDI名。每行任务数据都表示一个 EJB 模块。 | AppVersion、EJBModule、uri、JNDI | | DataSourceFor10CMPBeans | 允许您为具有容器管理的持久性的 EJB1.x bean的数据资源指定 JNDI名。每行任务数据都表示一个 EJB。 | AppVersion、EJBVersion、EJBModule、EJB、uri、JNDI、userName、password | | DataSourceFor20CMPBeans | 允许您为具有容器管理的持久性的JB2.x bean 的数据资源指定 JNDI名。每行任务数据都表示一个 EJB。 | AppVersion、EJBVersion、EJBModule、EJB、uri、JNDI | | MapWebModToVH | 允许您指定 Web模块的虚拟主机。每行任务数据都表示收集虚拟主机信息的应用程序中的 Web模块。 | webModule、uri、virtualHost | | EnsureMethodProtectionFor10EJB | 允许您指定是否应该使 EJB1.x模块的所有未受保护方法都不可访问。每行任务数据都表示一个 EJB1.x模块。
method.denyAllAccessPermission 列的可能值为
AppConstants.YES_KEY 或
AppConstants.NO_KEY 。
| EJBModule、uri、method.denyAllAccessPermission | | EnsureMethodProtectionFor20EJB | 允许您为 EJB 模块的未受保护方法指定保护级别。每行任务数据都为每个 EJB模块指定方法保护。
method.protectionType 列的可能值为
AppConstants.APPDEPL_METHOD_PROTECTION_UNCHECK 或
AppConstants.APPDEPL_METHOD_PROTECTION_EXCLUDE。
| EJBModule、uri、method.protectionType | | AppDeploymentOptions | 允许您指定各种特定于部署的选项。此任务只有两行。第一行指定选项名称,第二行包含相应的选项值。一些列(比如
preCompileJSPs 、
deployejb 、
distributeApp 、
useMetaDataFromBinary 、
createMBeansForResources )的可能值有
AppConstants.YES_KEY 或
AppConstants.NO_KEY 。
| preCompileJSPs、installed.ear.destination、distributeApp useMetaDataFromBinary、deployejb、appname、createMBeansForResources、reloadInterval、reloadEnabled | | EJBDeployOptions | 允许您指定在应用程序安装的过程中您想要部署EJB模块时可以传递的各种选项。此任务有两行。第一行指定选项的名称,而第二行包含相应的选项值。 | deployejb.classpath、deployejb.rmic、deployejb.dbtype、deployejb.dbschema | | MapModulesToServers | 允许您指定应用程序中的模块的目标服务器或群集。每行任务数据表示应用程序中的一个模块。服务器目标指定为
WebSphere:cell=cellName,node=nodeName,server=serveName ,群集目标指定为
WebSphere:cell=cellName,cluster=clusterName 。可以为给定的模块指定多个目标(通过用“+”对它们进行定界)。
| module、uri、server |
各种任务中的 URI 列都把格式
<moduleURI,ddURI> 作为它的值来惟一地标识应用程序中的模块,其中,
moduleURI 是定义在应用程序的部署描述符中的模块文件名,而
ddURI 可以是模块中部署描述符的 URI,也可以是模块可供选择的部署描述符的 URI(用于标准的部署描述符),与应用程序的部署描述符中定义的一样。举例来说,如果应用程序有一个 Web 模块在
MyWeb.war
中,并且该模块使用标准的部署描述符,那么在该模块的各种任务中,URI 列的值都是
MyWeb.war,WEB-INF/web.xml 。因此,URI 列值总可以保证模块的惟一标识。
以下代码摘录展示了如何从 AppDeploymentController 中获取任务:
AppDeploymentTask task =flowController.getFirstTask();
while (task != null)
{
// manipulate task data as necessary
task = flowController.getNextTask();
}
3. 操纵任务数据
使用任务名、任务列名和提供了绑定信息的 J2EE 组件就可以修改任务数据(如果对应的列标记为可变的话)。以下样本代码展示了如何为特定的任务提供绑定信息。在本例中,我们指定安全性角色的用户:设想该应用程序有一个名为 Role1 的安全性角色,并且您需要给此角色指定用户 User1 和 User2:
if (task.getName().equals ("MapRolesToUsers")
&& !task. isTaskDisabled())
{
// find out column index for role and user column
// refer to the table above 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 附带的客户机(Client Configuration)配置工具来配置应用程序客户机。)
4. 保存 EAR 文件和获取安装选项
在提供了各种任务中所有必需的绑定信息之后,就应该把任务数据存回到 EAR 文件中,以便将填充的 EAR 文件安装在 WebSphere 配置内。除了存储在 EAR 文件中的绑定信息之外,还有几个直接由任务收集的其他部署选项,比如 AppDeploymentOptions、EJBDeployOptions 和 MapModulesToServers。虽然这些选项不保存在 EAR文件中,但是它们应该在把应用程序装入 WebSphere配置时进行传递。在操纵了任务数据(必要时)并保存了 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();
管理应用程序
WebSphere Application Server中的应用程序管理支持提供了许多功能,比如安装和卸载应用程序、编辑已安装应用程序的绑定信息、更新整个应用程序、导出应用程序等等。这些功能是通过 com.ibm.websphere.management.application.AppManagement接口提供的,在 WebSphere Application Server中,把该接口作为基于 JMX 的 AppManagement MBean公开,可以通过运行在服务器上的代码访问它,也可以使用独立的管理客户机程序访问它。在使用 WebSphere Application Server Network Deployment(在本系列文章的
第一部分中做过说明)时,AppManagement MBean只出现在部署管理器中,部署管理器可以简化集中式配置和管理。与配置服务类似(在本系列文章的
第五部分中做过说明),也可以不在 WebSphere Application Server 中访问 AppManagement 功能。如果是把 J2EE应用程序作为产品安装的一部分进行安装,那么这种模式(称为本地模式(LocalMode))将特别有用。
AppManagementProxy
com.ibm.websphere.management.application.AppManagementProxy提供了对应用程序管理功能的统一访问,而不管访问是来自服务器流程、管理客户机流程,还是来自不在 WebSphere ApplicationServer 中的独立 Java程序。以下代码摘录演示了如何获取各种类中的 AppManagementProxy实例:
- 要从运行在 WebSphere Application Server 中的代码访问应用程序管理功能(例如作为自定义服务),请使用:
AppManagement appMgmt =
AppManagementProxy. getJMXProxyForServer();
然后,您就可以使用 AppManagement 接口来执行像安装程序这样的操作。
- 要通过基于 JMX 的 AppManagement MBean 从外部 WebSphere Application Server 访问应用程序管理功能,您需要首先创建一个 AdminClient 来建立到 WebSphere 服务器的连接。本系列文章的
第二部分(关于“编写您自己的管理程序”)说明了您可以如何获取 AdminClient 对象:
AdminClient adminClient = ....
// create AppManagement proxy object
AppManagement appMgmt =
AppManagementProxy. getJMXProxyForClient (adminClient);
图2展示了在使用 AppManagementProxy 对象与 AppManagement MBean 进行通信时的请求流。
图2. 使用远程客户机中的 AppManagementProxy
- 要在 WebSphere Application Server 没有运行时(本地模式)访问应用程序管理功能,您可以使用下列代码创建 AppManagementProxy:
AppManagement appMgmt =
AppManagementProxy. getLocalProxy ();
- 如果运行在本地模式下,您就必须把系统特性 com.ibm.ws.management.standalone 设置为
true 。如果您想要在非缺省位置上修改配置文档,就还需要通过系统特性
was.repository.root 设置 config 目录的位置。
- 虽然可以在也可以不在 WebSphere Application Server 运行的情况下使用实用程序管理功能,但是请
不要使用本地模式同时通过 AppManagement MBean 访问应用程序管理功能,因为使用这些模式进行的更新很可能妨碍和破坏 WebSphere Application Server 配置的完整性。
在获取了 AppManagementProxy之后,您就可以执行各种管理功能了,比如安装、卸载、编辑等等。然而,在深入研究各种应用程序管理功能的细节之前,理解配置服务中的会话概念(在本系列文章的
第五部分中做过说明)与应用程序管理功能的关系是有必要的。
会话共享
配置服务允许您创建一个会话,它是一个临时性的Staging area,可以在其中保存所有的配置修改。如果保存会话,则会把会话中的所有更新都保存到 WebSphere配置存储库中。应用程序管理逻辑支持与配置服务共享会话。因此,当配置服务做了一项更改时,就有可能在同一会话中进行所有特定于应用程序的更改。如果保存这样的会话,则会保存所有的更新,包括那些特定于应用程序的更新。AppManagement接口上的所有方法都把(
String
workspaceID
)作为最后的参数。下面是一个样本API:
public void installApplication (String localEarPath,
String appName, Hashtable properties,
String workspaceID) throws AdminException;
(出现异常的是 setApplicationInfo 和 setModuleInfoAPI,因为它们虽然采用了(
String
workspaceID
)作为参数,但是却没有作为
最后的s参数。)
为此参数传递空值指示没有会话共享,因此,作为此操作的结果进行的配置更改将一直保存在配置存储库中(如果操作成功的华)。下列代码演示了与配置服务共享的会话:
- 获取配置服务(请参考
第五部分:获取配置服务):
ConfigService configService = ...
- 创建一个会话(请参考
第五部分:获取配置服务):
Session session = ...
- 将会话信息传递到 AppManagement 中:
AppManagement appMgmt = ...
appMgmt.installApplication
(earPath, appName, properties, session.toString());
- 在进行了所有必要的更改之后,保存该会话:
configService.save(session, false);
安装应用程序
通过 AppManagement 接口上的 installApplication API(如果应用程序管理逻辑运行在本地模式下,则为installApplicationLocalAPI),可以把填充有特定于 WebSphere 的绑定信息的 EAR文件装入 WebSphere 配置。
com.ibm.websphere.management.application.AppManagement接口上的 installApplication API 的 javadoc解释了可以在应用程序安装时传递的各种选项,并且还展示了代码样本。这些选项也可以在
应用程序准备阶段进行收集。
配置存储库文档结构
当保存部署应用程序的会话时,就把应用程序 EAR文件以及应用程序元数据(它包括部署描述符和特定于WebSphere的绑定以及部署描述符扩展)存储在配置存储库中。此外,在部署应用程序时还创建了
deployment.xml 文件。它包含关于各种部署描述符属性和模块到目标(服务器/群集)的信息。这些文件按照下列目录结构存储在配置存储库中:
| EAR file: |
$WAS_HOME/config/cells/cellName/applications/appName.ear/appName.ear
| | Metadata: |
$WAS_HOME/config/cells/cellName/applications/appName.ear/deployments/appName/<<
all metadata files>> $WAS_HOME/config/cells/cellName/applications/appName.ear/deployments/appName/deployment.xml
|
在安装目的地解压缩 EAR 文件
在 WebSphere配置存储库创建了特定于部署的文件之后(而如果在 WebSphere Application Server Network Deployment配置的情况下,则当主存储库配置与期望在其上运行应用程序模块的每个节点同步时),就在目标节点的安装目的地位置解压缩应用程序 EAR 文件。此位置是在应用程序安装时通过选项AppConstants.APPDEPL_INSTALL_DIR指定的。只要服务应用程序客户机请求,WebSphere Application Server运行时就从安装目的地位置读取应用程序业务逻辑(例如,EJB类、servlet、JSP)。然而,只有在应用程序启动时,服务器运行时才读取应用程序元数据(例如,部署描述符、特定于WebSphere的绑定)。可以从配置存储库中读取元数据,也可以从安装目的地中读取元数据,取决于在应用程序安装时指定的 APPDEPL_USE_BINARY_CONFIG选项。此选项以 useMetadataFromBinaries 属性的形式保存在
deployment.xml 中。缺省行为是从配置存储库中读取元数据。
缺省安装目的地是
${APP_INSTALL_ROOT}/cellName/appName.ear ,它一般为
$WAS_HOME/installedApps/cellName/appName.ear 。如果把应用程序部署在异类节点上,那么就应该把安装目的地(AppConstants.APPDEPL_INSTALL_DIR选项在安装时指定的)定义为各个节点特定于平台的值的变量。
图3. Network Deployment 配置中的应用程序部署
卸载应用程序
卸载操作从 WebSphere配置中删除应用程序,因而会从它运行其上的服务器合群集中删除它。使用 uninstallApplication API(如果应用程序运行在本地模式下,则为uninstallApplicationLocal)卸载应用程序。
要从特定服务器或群集或特定节点上的所有服务其中删除应用程序,您可以编辑应用程序信息,如下面的
编辑应用程序一节所述。
在从 WebSphere配置存储库中卸载了应用程序之后(而如果在 WebSphere Application Server Network Deployment配置的情况下,则当主存储库配置与应用程序模块部署其上的每个节点同步时),EAR文件就在删除应用程序时解压缩在目标节点的安装目的地。在从目标节点中删除解压缩的 EAR文件之前停止应用程序(如果它正在运行的话)。
编辑应用程序
在安装后可以通过编辑现有的应用程序来修改在安装时指定的大多数应用程序绑定信息和应用程序选项。某些信息(比如 EJB部署、JSP预先编译)只是在安装时才可以使用。编辑操作需要进行以下步骤:
1. 获取关于已安装的应用程序的信息
使用 AppManagement 接口上的 getApplicationInfo方法获取 AppDeploymentTask 实例列表。
// Get information for an application with name appName
// Pass Locale information as the preference
Hashtable prefs = new Hashtable();
prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault());
Vector allTasks =
appMgmt.getApplicationInfo (appName, prefs, null);
2. 在必要时操纵任务数据
在前面的步骤中返回的 Vector 包含各种 AppDeploymentTask实例,它们与上面的
AppDeploymentTask表中所说明的一样。这些任务可以像
操纵任务数据一节中所说明的那样进行操纵。
3. 将更改存回到已安装的应用程序中
使用 AppManagement 接口上的 setApplicationInfo方法将所作的更改存回到配置存储库或会话中。
// Set information for an application with name appName
// Pass Locale information as the preference
Hashtable prefs = new Hashtable();
prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault());
appMgmt.setApplicationInfo (appName, prefs, null, allTasks);
在把已编辑的应用程序保存在 WebSphere配置存储库中之后(而如果在 WebSphere Application Server Network Deployment配置的情况下,则当主存储库配置与应用程序模块部署其上的每个节点同步时),就可以对每个节点进行以下操作:
- 如果应用程序正运行在目标节点上,就停止和重新启动它以使新的绑定信息和部署选项生效。
- 如果通过编辑 MapModulesToServers 任务从目标节点中彻底删除应用程序,则作为删除应用程序的结果,EAR 文件就会解压缩在目标节点的安装目的地。相反地,如果把应用程序重新部署在目标节点的应用程序服务器上,则 EAR 文件就会解压缩在安装目的地。
重新部署(更新)配置
即使在把应用程序部署到生产系统中之后,应用程序开发人员也会在他们的开发环境中继续开发和/或修改应用程序,这是很常见的现象。为了用新版本替换已部署的J2EE 应用程序,AppManagement 接口提供了 redeployApplication API(redeployApplicationLocal用于本地模式)。此功能卸载已部署的应用程序,并且安装了一个与之名称相同的新版本应用程序。
如果 WebSphere配置存储库中的应用程序在运行时被更新,那么正在运行的应用程序会首先停下来,旧的 EAR文件会从安装目的地删除,新的 EAR文件会解压缩在安装目的地,然后应用程序会重新启动。
启动和停止应用程序
WebSphere Application Server在每个应用程序服务器中都提供了 ApplicationManager MBean,它允许您启动和停止服务器上的应用程序。请参阅本系列文章的
第二部分来学习如何访问 MBean操作。
从 WebSphere Application Server Version 5.0.1 开始,AppManagement接口还提供了 startApplication 和 stopApplication API。这些功能可以启动和停止部署在所有目标(服务器和群集)上的应用程序。
使用 AppDeployment 选项的 ConfigService
有一些与部署的应用程序有关的附加属性在使用AppDeploymentTask对象安装应用程序时或安装完成之后都没有出现。这些属性保存在
deployment.xml 文件中,每个已部署的应用程序都会在配置存储库中创建
deployment.xml 文件。请参阅
下载部分中的样本代码(
AppManagementSample1.java ),以查看您可以如何使用配置服务来操纵这些属性。这些属性包括:
- startingWeight:指定在服务器启动时启动应用程序的次序;应用程序按照它们启动权重的升序进行启动。
- classloaderMode:指定应用程序类加载器搜索类的次序;在缺省情况下为 PARENT_FIRST,它表示按照下列顺序查找类:流程、应用程序、模块。另一个选项为 PARENT_LAST。
请参阅
javadocon appdeployment类来了解每个应用程序部署定义的各种属性。
结束语
WebSphere Application Server中的应用程序管理功能在版本 5.0中得到了大大的增强。在本文以及
下载部分中提供的代码样本演示了如何程序化地管理 J2EE应用程序。查看下一部分中的 URL 以获得更多的信息。
相关信息
下载 | 名字 | 大小 | 下载方法 |
|---|
| AppManagementSample.zip | 0.1 MB | HTTP |
关于作者  | |  | Ajay Apte 是 IBM 的软件工程师顾问,他在位于得克萨斯州奥斯汀市的 WebSphere 应用程序服务器发展组织工作。从应用程序服务器4.0版本以来,他已经成为 WebSphere 系统开发队伍的领导者之一。Ajay 主要从事 J2EE 应用程序管理的研究。您可以通过
ajayapte@us.ibm.com与 Ajay 联系。
|
对本文的评价
|