在另一个 java 应用程序中启动 spring 启动应用程序?
Start a spring boot application inside another java application?
我有两个 java 申请:
- 以spring启动的服务器
- 使用它的客户端(通过 REST api)
目前,我在不同的进程中启动这两个应用程序。
如何从客户端启动服务器以获得“独立”应用程序?使用 ProcessBuilder
调用 java.exe
是一种解决方案,但它有缺点:它将 OS 依赖并且不能保证服务器进程将在客户端离开时关闭/终止。
从体系结构的角度来看,将它们分开是最好的选择,因为您将服务器和客户端分开,这将是生产环境中的行为。
如果您只在开发阶段需要它,而您将两者 运行 放在一起是为了节省时间,您可以使用 Docker 在容器中构建它们。基本上创建两个应用程序,从两个不同的文件夹构建,然后您将同时启动它们。
我在 https://www.toptal.com/spring-boot/spring-boot-application-programmatic-launch 中找到了解决方案。伊戈尔·德拉克
- 打开包含服务器的 jar 文件以查找 class
...loader.archive.JarFileArchive
(和其他一些)
- 实例化它并使用它在 jar 本身上启动应用程序。
jar 文件既未提取也未修改。只读了几个 classes。
我有两个 java 申请:
- 以spring启动的服务器
- 使用它的客户端(通过 REST api)
目前,我在不同的进程中启动这两个应用程序。
如何从客户端启动服务器以获得“独立”应用程序?使用 ProcessBuilder
调用 java.exe
是一种解决方案,但它有缺点:它将 OS 依赖并且不能保证服务器进程将在客户端离开时关闭/终止。
从体系结构的角度来看,将它们分开是最好的选择,因为您将服务器和客户端分开,这将是生产环境中的行为。
如果您只在开发阶段需要它,而您将两者 运行 放在一起是为了节省时间,您可以使用 Docker 在容器中构建它们。基本上创建两个应用程序,从两个不同的文件夹构建,然后您将同时启动它们。
我在 https://www.toptal.com/spring-boot/spring-boot-application-programmatic-launch 中找到了解决方案。伊戈尔·德拉克
- 打开包含服务器的 jar 文件以查找 class
...loader.archive.JarFileArchive
(和其他一些) - 实例化它并使用它在 jar 本身上启动应用程序。
jar 文件既未提取也未修改。只读了几个 classes。