java - Tomcat - 运行外部 JAR/WAR

标签 java tomcat executable-jar

所以我有一个正在运行的小 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/

相关文章:

java - Tomcat 调用 Windows bat 文件的某处是否有 1000 个字符的限制?

jsp - 在 Tomcat7 中向错误页面添加 header

java - 使用外部 JNI 库构建 Maven 项目

java - 关于 Java Web Start 的问题

Java:将包含文件和目录的目录移动到新路径

java - 获取资源路径

更新时发生java.lang.NullPointerException?

java - 复制/粘贴后 PDFBox 文本外观不正确

java - 配置eclipse、tomcat和maven提高webapp的生产力

java - 如何制作不会静默失败的可运行 Jar 程序?