您可以对应用程序及其模块进行各种更改,而无须停止并重新启动服务器。进行这些类型的更改称为热部署和动态重新装入。
开始之前
以下注意事项适用于本主题中的 xmi 文件引用:
支持的配置: 对于 IBM® 扩展文件和绑定文件,根据您使用的是 Java EE 5 之前的应用程序或模块还是
Java™ EE 5 或之后的应用程序或模块,.xmi 或 .xml
文件扩展名有所不同。IBM 扩展文件或绑定文件将命名为
ibm-*-ext.xmi 或 ibm-*-bnd.xmi,其中 * 是扩展文件或绑定文件的类型,例如,app、application、ejb-jar 或 web。存在下列条件:
- 对于使用 V5 之前的 Java EE 版本的应用程序或模块,文件扩展名必须是 .xmi。
- 对于使用 Java EE 5 或更高版本的应用程序或模块,文件扩展名必须是 .xml。如果应用程序或模块中包含 .xmi 文件,那么产品将忽略这些 .xmi 文件。
然而,Java EE
5 或更高版本的模块可以在包含 Java
EE 5 之前的文件并使用 .xmi 文件扩展名的应用程序中存在。
ibm-webservices-ext.xmi、ibm-webservices-bnd.xmi、ibm-webservicesclient-bnd.xmi、ibm-webservicesclient-ext.xmi 和
ibm-portlet-ext.xmi 文件继续使用
.xmi 文件扩展名。
sptcfg
![[Solaris]](../images/solaris.gif)
限制: 产品运行在这些操作系统上时,热部署和动态重新装入功能不受支持。关联 Java Development Kit (JDK)
内的 Java 归档 (JAR) 文件是内存映射的。如果 Java 虚拟机 (JVM) 使用这些 JAR 文件时热部署和动态重新装入功能更新了这些 JAR 文件,那么这些文件会不一致,这会导致应用程序服务器崩溃。如果在这些操作系统上更改应用程序,请不要使用热部署和动态重新装入功能。请重新启动应用程序以反映更改。
此主题假设您的应用程序文件在服务器上已部署,而且您要升级这些文件。
请参阅更新企业应用程序文件的方法并确定是否热部署是更新应用程序文件的适当方法。其他方法可能更简单,而热部署只适合于经验丰富的用户。
如果打算导出应用程序、根据应用程序配置生成插件或在将来执行其他应用程序管理,请不要使用热部署。管理控制台或 wsadmin 应用程序管理功能无法识别使用热部署对应用程序文件作出的更改。这些功能仅可识别管理程序(例如控制台或 wsadmin)在安装或更新应用程序或者对应用程序执行其他管理功能期间处理的应用程序文件。应用程序管理功能无法识别通过热部署更改的文件。
要点: 不要使用热部署更新生产 Deployment Manager 所管理单元中的组件。热部署完全适合开发和测试,但是会引起不可接受生产环境风险。完全或部分重新同步可能擦除热部署的组件。而且,运行
restoreconfig 命令可能会覆盖对扩展应用程序文件的更改。而且,将不会在WebSphere® Application Server的各个版本之间迁移热部署组件。要将新组件或模块添加到企业应用程序,重新组装应用程序 EAR 文件,使它具有新的组件或模块,然后重新部署 EAR 文件。
关于此任务
热部署是在不停止应用程序服务器进程并重新启动的情况下,添加新组件(如 WAR 文件、EJB Jar 文件、企业 Java bean、Servlet 和 JSP 文件)到运行服务器的过程。
动态重新装入是不重新启动服务器以使更改生效来更改现有组件的能力。动态重新装入涉及:
- 更改应用程序组件的实现,如更改 Servlet 的实现
- 更改应用程序的设置,如更改 Web 模块的部署描述符
与更新企业应用程序文件中所描述的对已部署应用程序进行的更改相反,使用热部署或动态重新装入进行的更改不使用管理控制台或 wsadmin 脚本命令。您必须直接操纵部署应用程序的服务器上的应用程序文件。
如果您更新的应用程序部署到应用程序类装入器策略设置为 Single 的服务器上,您可能不能动态重新装入应用程序。最少的情况下,您必须在更新应用程序后重新启动服务器。
过程
- 找到扩展的应用程序文件。
应用程序文件在您安装应用程序时指定的目录中,或者,如果您未指定定制目标目录,那么在缺省目标目录
app_server_root/installedApps/cell_name 中。您的 EAR 文件 ${APP_INSTALL_ROOT}/cell_name/application_name.ear 指向目标目录。节点的 variables.xml 文件定义 ${APP_INSTALL_ROOT}。
因为作为安装应用程序的一部分,WebSphere Application Server 将 EAR 文件的部分 unjar 到将运行应用程序的计算机文件系统上,因此找到扩展应用程序文件很重要。这些扩展的文件是运行应用程序时,服务器所查看的文件。如果您未找到扩展的应用程序文件,那么查看您应用程序的 deployment.xml 文件中的 binariesURL 属性。此属性指定运行时用于查找应用程序文件的位置。
对于有关热部署和动态重新装入的此信息的剩余部分,application_root 表示扩展应用程序文件的根目录。
- 找到应用程序元数据文件。元数据文件包含部署描述符(web.xml、application.xml
和 ejb-jar.xml 以及类似文件)、绑定文件(ibm-web-bnd.xmi、ibm-app-bnd.xmi
以及类似文件)和扩展文件(ibm-web-ext.xmi、ibm-app-ext.xmi 以及类似文件)。
应用程序的元数据 XML 文件可从两个位置之一装入。元数据文件可从应用程序二进制文件的同一位置(如
application_root/META-INF)装入,或者可从 WebSphere 配置树(${CONFIG_ROOT}/cells/cell_name/applications
/application_EAR_name/deployments/application_name/)装入。应用程序安装期间所指定 useMetadataFromBinary 标志的值控制使用哪个位置。如果指定了,元数据文件从应用程序二进制文件的同一位置装入。如果未指定,元数据文件从配置树中的应用程序部署文件夹装入。
要点: 通过遵循本主题中的过程,可设置 useMetadataFromBinaries=true,使用热部署更改应用程序的已解压副本,然后使更改在运行时生效。但是,控制台或 wsadmin 应用程序管理功能无法识别使用热部署对应用程序文件作出的更改。这些功能仅可识别原始应用程序文件,而无法识别通过热部署更改的文件。如果打算导出应用程序、根据应用程序配置生成插件或在将来执行其他应用程序管理,请不要使用热部署。热部署使您能够快速更改应用程序文件;它不支持应用程序的完整管理生命周期。
对于此信息的剩余部分,metadata_root 表示所指定应用程序或模块的元数据文件的位置。
- 必需: 如果在使用 WebSphere Application Server Network Deployment 的一组机器上运行WebSphere Application Server,并且要在特定节点上更改应用程序,那么禁用自动同步。
- 在控制台导航树中,单击。
- 在“文件同步服务”页面上,清除自动同步的复选框,然后单击确定。
当您在使用
WebSphere Application Server Network Deployment 的机器组上运行WebSphere Application Server,而且您更改特殊节点的扩展应用程序目录中磁盘上的文件时,您会在下一次发生节点同步时丢失那些更改。在
WebSphere Application Server Network Deployment 环境中,Deployment Manager 存储的配置是主副本,如果在主副本与特定机器上的副本之间检测到任何更改,那么会导致将主副本下载到该节点。
- 可选: 在应用程序的类装入器的设置页上检查对更新应用程序文件时重新装入类和已更新文件的轮询时间间隔指定的值。
如果启用类的重新装入,并且轮询时间间隔大于零 (0),那么在更新应用程序后重新装入应用程序文件。对于 Web 模块中的 JavaServer Pages (JSP) 文件来说,仅当 ibm-web-ext.xmi 文件中 jspAttributes 中的 IBM 扩展 jspReloadingEnabled 设置为 true 时,Web 容器才会重新装入 JSP 文件。当在组装工具中编辑
Web 模块的扩展部署描述符时,您可将 jspReloadingEnabled 设置为 true。
- 按需更改或添加下列组件或模块:
- 为使更改生效,您可能需要启动、停止或重新启动应用程序。
启动或停止企业应用程序 提供有关使用管理控制台来启动、停止或重新启动应用程序的信息。
使用 wsadmin 脚本编制来启动应用程序和使用 wsadmin 脚本编制停止应用程序提供有关使用 wsadmin 脚本编制工具的信息。
- 如果在步骤 3 中禁用自动同步,那么再次启用自动同步:
- 返回到“文件同步服务”页面。
- 选择自动同步。
- 单击确定。
结果
将在服务器上更新应用程序文件。
因为您直接控制服务器上的应用程序文件,所以稍后可能无法使用管理控制台或 wsadmin 脚本命令来处理这些文件。例如,如果您尝试使用“企业应用程序控制台”页上的导出来导出手动更改的应用程序,那么将不导出对 installedApps 目录中的应用程序所作的手动更改。要导出那些更改,您必须手动复制和移动应用程序文件。