我读到过,使用Tomcat 5.5+可以在不重新启动的情况下将war部署到Tomcat服务器。这听起来很棒,但我想我对这个功能和可靠性太怀疑了。我之前的经验(对于Websphere)是重启服务器以避免内存问题等的最佳实践,所以我想得到关于Tomcat可能存在的陷阱的反馈。
(为了明确我的经验,我为一家大公司开发了5年的java web应用程序,该公司将应用程序开发人员与应用程序服务器工程师分开-我们使用Websphere -所以我自己在运行/配置任何应用程序服务器方面没有太多经验)
发布于 2010-02-20 02:42:30
通常,有多种类型泄漏,它们适用于重新部署场景。对于生产系统,如果可能的话,最好执行重启,因为在当今的应用程序中使用了如此多的不同组件和库,以至于很难找到所有的组件和库,甚至更难修复它们。Esp。如果你不能访问所有的源代码。
泄漏
ClassLoader泄漏就是那些会影响重新部署的漏洞。
它们可以由任何东西引起。真的,我是说所有的事情:
.war文件中。由于缓存通用日志的静态registry)造成的泄漏
具体到Tomcat,我的经验如下:
对于具有“干净”库的简单应用程序,它在Tomcat
org.apache.catalina.core.JreMemoryLeakPreventionListener,最近提交给了Tomcat6.x我写了一篇关于my experience with leaks when doing redeployment stresstesting的博客文章--试图“修复”企业级Java Web应用程序的所有可能泄漏。
发布于 2010-02-20 20:12:41
热部署非常好,因为它通常比启动和关闭服务器快得多。
mhaller写了很多关于避免泄漏的文章。另一个问题是,活动用户的会话在应用程序“重启”后仍然存在。有几件事必须注意,但所有这些都意味着它们的会话必须是可序列化的,然后才能正确地反序列化。如果你有有状态的数据库连接等,这可能会有点棘手,但如果你的代码对数据库hickup是健壮的,那应该不会太糟糕。
还要注意,一些IDE允许在保存修改的源文件时更新WAR中的代码(与应用程序的方式相同),而不必重新部署。MyEclipse在这方面做得相当好。
https://stackoverflow.com/questions/2298638
复制相似问题