【问题标题】:Run multiple spring boot jars in one jvm在一个 jvm 中运行多个 Spring Boot jar
【发布时间】:2015-10-15 23:01:27
【问题描述】:

我的项目包含几个服务,每个服务都用@SpringBootApplication注解,可以通过“gradle bootRun”在随机端口上运行。

是否可以将服务构建到 jar 中并在一个 JVM 中一起运行它们?通过编程方法或将它们放入容器中无关紧要。

如果可能,请给我一些说明。谢谢!

【问题讨论】:

  • 你为什么要这样做——为什么不在单独的 JVM 进程中运行它们?
  • @Jesper 感谢您的回复。有两个原因:1.我们可以在一个简单的命令中运行服务(我们目前正在使用批处理),2.检查是否可以减少内存使用量。

标签: java spring


【解决方案1】:

这有点hacky,但可以做到。我前段时间写了一篇关于它的博客文章:Running Multiple Spring Boot Apps in the Same JVM。基本思想是在不同的类加载器中运行每个 Spring Boot 应用程序(否则会出现资源冲突)。

我个人仅将其用于测试。我更愿意在生产中的不同 docker 容器中运行不同的应用程序。但是对于测试来说它非常酷:您可以快速启动您的应用程序并调试所有内容...

【讨论】:

    【解决方案2】:

    如果您想在单个 JVM 中启动多个 Spring Boot 微服务,那么您可以通过启动多个线程来实现。请参考这里的示例代码https://github.com/rameez4ever/springboot-demo.git

    【讨论】:

    • 请考虑在您的答案和链接中添加信息,这是一个很好的做法,因为链接可以删除,其中包含的信息将无法访问
    【解决方案3】:

    是的,您可以查看SO

    但是,如果分离运行用户进程和简单性是核心,我建议使用Docker containers,容器的每个运行实例(您的应用程序)将在同一或分布式主机上的自己的 JVM 中运行

    【讨论】:

    • 谢谢,但这不是我想要的。我要求一种方法将不同的 Spring Boot 项目放在一起,并在具有不同端口的 SAME JVM 中运行它们。我找到了this blog,但不确定项目是如何部署的。
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多