我有一个有点奇怪的问题,我可能措辞不正确,但想法是:我将 WAR 部署在与少数第三方系统集成的 Tomcat 容器中。
我希望每个第三方系统的实现都部署在同一个 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,应用程序仍将重新加载,但可能会丢弃请求。