gpt4 book ai didi

java - Tomcat - 运行外部 JAR/WAR

转载 作者:行者123 更新时间:2023-11-28 22:48:15 24 4
gpt4 key购买 nike

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

  • 主 Servlet
  • 作业 A 的类
  • 工作 B 的类(class)
  • 作业C类
  • 用于各种作业执行的大量类

Web 应用程序是通过 ant 编译和部署的。此刻,我得到了一个包含所有类的漂亮的 Project.war。

基本上,主 servlet 充当调度程序。根据收到的网络请求,它会在新线程中启 Action 业 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,但感觉这是最不安全的事情。

欢迎任何意见。

谢谢!

最佳答案

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

但为了简单起见,在之前的工作中,我们需要在不使用 OSGI 的情况下实现类似 OSGI 的功能,我们使用 serviceLoader 构建了 API并为我们的模块(在您的工作案例中)创建了一个接口(interface),每个 jar 都有一个实现该接口(interface)的类。一旦需要该作业,您可以从服务加载器调用它(如果存在),您可以使用它,如果不存在则抛出一些错误。

关于java - Tomcat - 运行外部 JAR/WAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com