java - 动态加载的 JAR/等。在同一个 JVM 容器中

标签 java tomcat jvm

我有一个有点奇怪的问题,我可能措辞不正确,但我的想法是: 我在与少数第三方系统集成的 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,应用程序仍将重新加载,但请求可能会被丢弃。

关于java - 动态加载的 JAR/等。在同一个 JVM 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406482/

相关文章:

java - 如果在集合实例化期间未指定类型参数之一,会发生什么情况?

java - 笔记本崩溃后无法使用 IDE 将 war 部署到 tomcat

jvm - 为什么 Elixir 比 JRuby 快?

macos - 尝试从源代码 : Ant doesn't download libs 构建 Tomcat 6

java - 如何用 Java 编写正确的微基准测试?

java - top -H -p <JVMprocessid> 给出了什么? java线程数?

java - 使用 javax.scripting 从 Java 进行 Jython 调用

java - 找不到主类 :bootRepackage

java - 调试的原理是什么?

image - CMYKJPEGImageReaderSpi 未加载