在另一个 Java 应用程序中启动一个 Spring Boot 应用程序?

时间:2021-04-24 11:07:23

标签: spring-boot processbuilder

我有两个 Java 应用程序:

  • 一个以 spring boot 启动的服务器
  • 使用它的客户端(通过 REST api)

目前,我在不同的进程中启动这两个应用程序。

如何从客户端启动服务器以获取“独立”应用程序?使用 ProcessBuilder 调用 java.exe 是一种解决方案,但它有缺点:它将依赖于操作系统,并且不能保证服务器进程会在客户端离开时关闭/终止。

2 个答案:

答案 0 :(得分:1)

从架构的角度来看,将它们分开是最好的选择,因为您将服务器和客户端分开,这将是生产环境中的行为。

如果您只在开发阶段需要它,并且将两者一起运行是为了节省时间,您可以使用 Docker 在容器中构建两者。基本上创建两个应用程序,从两个不同的文件夹构建,然后您将一起启动。

答案 1 :(得分:1)

我在 https://www.toptal.com/spring-boot/spring-boot-application-programmatic-launch 中找到了解决方案。伊戈尔·德拉克

  • 打开包含服务器的 jar 文件以查找类 ...loader.archive.JarFileArchive(和其他一些)
  • 实例化它并使用它在 jar 本身上启动应用程序。

jar 文件没有解压也没有修改。只读取了几个类。