【发布时间】:2018-04-14 23:02:16
【问题描述】:
所以我正在运行一个小型 Tomcat Web 应用程序,其结构如下:
- 主 Servlet
- 作业 A 类
- 作业 B 类
- 作业 C 类
- 用于各种作业执行的大量类
webapp 是通过 ant 编译和部署的。目前,我得到了一个包含所有类的不错的 Project.war。
基本上,主 servlet 用作调度程序。根据收到的网络请求,它会在新线程中启动作业 A、B 或 C。
我想改进我的应用程序,以便在不影响正在运行的进程的情况下为 Job A/B/C 重新部署类。以下是我的概念化方式:
- 我部署了主 servlet,用作调度程序。
- 我部署 A.war、B.war、C.war
- 我运行 B.war
- 我重新部署了 A.war,B.war 仍在运行
- 我运行 A.war
- B.war 完成,其输出通过主 servlet 发回。
说实话,我不知道从哪里开始或从哪里看。我考虑过使用 ProcessBuilder 并在命令行中执行 jar/war,但感觉这是最不安全的事情。
感谢任何输入。
谢谢!
【问题讨论】:
-
我相信微服务是您的答案。您的应用程序应通过 Web 服务 (REST) 进行通信,最好将它们中的每一个部署在单独的 docker 容器中。
-
这是我不知道的事情,我会看看这个谢谢。如果您有任何示例或指南,我将从那里开始反思!
-
如果您在 servlet 容器中运行时生成自己的线程,那么您几乎肯定是“做错了”。该应用程序是否主要通过 HTTP 进行通信并提供这些服务(例如 Job A、Job B 和 Job C)?如果是这样,容器将取代您的“主 servlet”已经在做的所有事情,并且您的代码可以变得更简单。
标签: java tomcat executable-jar