Tomcat - 运行外部JAR / WAR

时间:2018-04-14 23:02:17

标签: java tomcat executable-jar

所以我有一个运行的小型Tomcat Web应用程序,具有以下结构:

  • Main Servlet
  • 工作A的课程
  • 职业B班级
  • Job C的课程
  • 用于执行各种工作的大量课程

编写了webapp&通过蚂蚁部署。目前,我得到了一个很好的Project.war所有课程。

基本上,主servlet是一个调度程序。根据收到的webrequest,它会在新线程中启动作业A,B或C.

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

  • 我部署了主servlet,用作调度程序。
  • 我部署A.war,B.war,C.war
  • 我跑B.war
  • 我重新部署A.war,B.war仍在运行
  • 我跑A.war
  • B.war已完成,其输出通过主servlet发回。

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

赞赏任何意见。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

但是为了简单起见,在以前的工作中,我们需要像OSGI这样的行为而不使用OSGI,我们使用serviceLoader构建API并为我们的模块创建一个接口(在你的案例工作中)每个jar都有一个类将实现该接口。一旦需要这个工作,你可以从服务加载器调用它,如果它存在你可以使用它,如果没有抛出一些错误。