在开发环境中,您可能想在应用程序正在服务器上运行时对其进行更改,例如,当您正在服务器上调试应用程序时。在某些情况下,可以采用动态方式重新装入经过修改的代码,而不必重新启动服务器。根据已修改资源的类型和服务器类型不同,可能会也可能不会改变程序的状态。
如果应用程序正在服务器上运行,并且您对代码作了更改,则 Java™ 虚拟机将继续运行初始代码,直到自动或手工重新装入代码为止。例如,您可以修改 JSP 源代码,且会在服务器上自动重新装入这些更改。对于其他资源(如在 Tomcat1 上运行的 Java 类,必须重新启动服务器以确保服务器识别这些更改。
如果服务器正在运行时对服务器或服务器配置作了任何更改(例如,更改了端口号),则需要重新启动服务器。
如果在服务器正在运行时对 JSP 文件、HTML 文件、GIF 文件、JPG 文件或类似的资源作了任何更改并保存该文件,则需要在服务器上发布应用程序,然后刷新 Web 浏览器以便服务器识别更改。程序的状态不会改变。要在服务器上发布应用程序,您可以等待自动发布时间间隔过去,也可以手工发布应用程序(在“服务器”视图中右键单击服务器并选择发布)。有关自动或手工发布至服务器的更多详细信息,请参阅发布应用程序主题。
如果在服务器正在运行时对 servlet 作了任何更改并保存文件,则在已对该应用程序启用了重新装入的情况下将重新装入该 servlet。如果对服务器启用了热方法替换,则不需要刷新浏览器更改就会自动生效。
如果禁用了热方法替换,则在服务器上发布应用程序然后刷新“Web 浏览器”时,服务器能够识别更改,且应用程序的状态不会改变。要在服务器上发布应用程序,您可以等待自动发布时间间隔过去,也可以手工发布应用程序(在“服务器”视图中右键单击服务器并选择发布)。有关自动或手工发布至服务器的更多详细信息,请参阅发布应用程序主题。请记住,该项目的会话数据将丢失,但应用程序内其他项目的状态不会更改。可以在“导航器”视图中从项目的弹出菜单重新启动项目。对于 WebSphere Application Server V5.12,如果未启用重新装入,则必须重新启动 EAR。如果正在运行 Tomcat 并且未启用重新装入,则需要重新启动服务器。
对于 WebSphere Application Server,上述规则也适用于 Web 项目的任何从属类或部署描述符。如果修改了正在 WebSphere Application Server 上运行的 web.xml 部署描述符的安全性或登录配置属性,则需要重新启动服务器。对于 Tomcat,任何这些更改都要求重新启动服务器。
如果服务器正在运行时将新的 servlet、从属类或 JSP 文件添加至 Web 项目,则能够识别更改(如果已启用重新装入的话)。未启用重新装入的情况下,如果正在运行 WebSphere Application Server,则需要发布应用程序并重新启动 EAR 项目;如果正在运行 Tomcat,则必须发布应用程序并重新启动服务器。要在服务器上发布应用程序,您可以等待自动发布时间间隔过去,也可以手工发布应用程序(在“服务器”视图中右键单击服务器并选择发布)。有关自动或手工发布至服务器的更多详细信息,请参阅发布应用程序主题。如果在调试方式下启用了热代码替换,则将自动识别对 Java 类的更改。
对于 WebSphere Application Server,服务器将在 EAR 中以动态方式重新启动 EJB 项目。如果在调试方式下启用了热代码替换,则会自动识别对 Java 类所作的更改。
对于 WebSphere Application Server,如果在服务器上运行企业应用程序项目时更改了项目中的任何资源,则服务器将以动态方式重新启动 EAR。Tomcat 不支持企业应用程序项目测试和发布。
对于 WebSphere Application Server V6.x,如果更改了 WebSphere Enhanced EAR 编辑器中的任何资源,则需要重新启动服务器并重新发布该应用程序。WebSphere Enhanced Ear 编辑器是应用程序部署描述符编辑器中的“部署”页。
修改的资源 | 必需的操作 | |||
---|---|---|---|---|
WebSphere Application Server | Apache Tomcat | WebSphere Application Server Express | ||
服务器配置 | V5.1 服务器:重新启动服务器 | 重新启动服务器 | 重新启动服务器 | |
V6.x:行为与独立 WebSphere Application Server 相同,有关详细信息,请参阅 WebSphere 信息中心 | ||||
JSP | 刷新 Web 浏览器 | 刷新 Web 浏览器 | 刷新 Web 浏览器 | |
servlet | 启用热方法替换 | 自动 | 自动 | 自动 |
启用重新装入 | 刷新 Web 浏览器 | 刷新 Web 浏览器 | 刷新 Web 浏览器 | |
禁用重新装入 | 重新启动 EAR 项目或服务器 | 重新启动服务器 | 重新启动 EAR 项目或服务器 | |
相关类或部署描述符 | 启用热方法替换 | 自动 | 自动 | 自动 |
启用重新装入 | 刷新 Web 浏览器 | 刷新 Web 浏览器 | 刷新 Web 浏览器 | |
启用重新装入 | 重新启动 EAR 项目或服务器 | 重新启动服务器 | 重新启动 EAR 项目或服务器 | |
EJB 实现 | 自动重新装入 | 不受支持 | 不受支持 | |
当启用了热方法替换时:自动而不进行重新装入 | ||||
EJB 接口或接口的从属类 | 自动重新装入。如果应用程序客户机拥有对 EJB 的引用,则重新启动应用程序客户机。 | 不受支持 | 不受支持 | |
依赖于 EJB 的类或部署描述符 | 自动重新装入 | 不受支持 | 不受支持 | |
当启用了热方法替换时:自动替换 | ||||
添加了 EJB 或从属类 | 自动重新装入 | 不受支持 | 不受支持 | |
当启用了热方法替换时:自动替换 | ||||
EAR 文件 | 自动重新装入 | 不受支持 | 刷新 Web 浏览器 | |
应用程序部署描述符编辑器的“部署”页 | V6.x 服务器:重新启动服务器并重新发布应用程序 | 不受支持 | 不受支持 |