【发布时间】:2012-05-02 01:10:38
【问题描述】:
我有一个有点奇怪的问题,我可能措辞不正确,但想法是: 我在 Tomcat 容器中部署了 WAR,它与少数第三方系统集成。
我希望每个第三方系统的实现都部署在同一个 Tomcat(JVM 容器)中。可能是一个 JAR。 我希望 WAR 真正有效地使用这个 JAR(速度、负载、内存使用等) 添加新 JAR 时我不想重新启动 Tomcat。
最好的方法是什么?
【问题讨论】:
我有一个有点奇怪的问题,我可能措辞不正确,但想法是: 我在 Tomcat 容器中部署了 WAR,它与少数第三方系统集成。
我希望每个第三方系统的实现都部署在同一个 Tomcat(JVM 容器)中。可能是一个 JAR。 我希望 WAR 真正有效地使用这个 JAR(速度、负载、内存使用等) 添加新 JAR 时我不想重新启动 Tomcat。
最好的方法是什么?
【问题讨论】:
如果不重新加载,您将无法安全地动态添加/更新 JAR。在某些非常特殊的情况下,您可能会通过添加新 JAR 而侥幸成功,但这种情况很容易发生。
您能做到的最好的方法是将 JAR 添加到 WEB-INF/lib 并重新加载 Web 应用程序(而不是重新启动 Tomcat)。最终用户可能会在 Web 应用程序重新启动时看到请求处理暂停,但您不应该看到任何丢弃的请求。请注意,这仅适用于更新使用 Web 应用程序部署的类和 JAR。如果您更改 WEB-INF/web.xml 或 META-INF/context.xml,应用程序仍会重新加载,但可能会丢失请求。
【讨论】: