Tomcat - 运行 外部 JAR/WAR

Tomcat - Running external JAR/WAR

所以我有一个 Tomcat 网络应用程序 运行ning,具有以下结构:

webapp是通过ant编译部署的。目前,我得到了一个很好的 Project.war 和所有 classes.

基本上,主 servlet 充当调度程序。根据收到的网络请求,它会在新线程中启动作业 A、B 或 C。

我想改进我的应用程序,以便可以在不影响 运行ning 进程的情况下为作业 A/B/C 重新部署 class。以下是我对其进行概念化的方式:

老实说,我不知道从哪里开始或从哪里看。我考虑过使用 ProcessBuilder 并在命令行中执行 jar/war,但感觉这是最不安全的事情。

欢迎任何意见。

谢谢!

我相信您需要一个模块化应用程序,其中有多个插件(在您的情况下是作业),可以在需要时加载或卸载,并在可用时使用。检查 this Whosebug 问题它可以给你一点帮助。

但是为了简单起见,在之前的工作中我们需要一些类似 OSGI 的东西而不使用 OSGI,我们使用 serviceLoader 构建了 API 并为我们的模块(在你的工作案例中)创建了一个接口jar 将有一个 class 来实现接口。一旦需要该作业,您可以从服务加载程序中调用它(如果存在),您可以使用它,如果不存在则抛出一些错误。