我执行了以下步骤,以便在相同主机上运行我的spring-boot应用程序的2个实例:
然后我在应用程序1启动时遇到以下错误:已经提供了服务应用程序!
所以我意识到了:
我阅读了spring-boot插件文档,尝试在不同的弹簧上对 attach , classifier 和 embeddedLaunchScriptProperties.initInfoProvides 选项进行不成功的编译。引导maven插件执行相同的构建。
我还尝试在不同的maven配置文件中封装不同的执行。我还有一个原始的jar文件和一个弹簧启动罐。
因此,如果有人知道如何实现我的目标(相同的源,多个配置良好的Linux服务,因为我在同一主机上运行),我真的很感激帮助。
下面是不成功配置的示例:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>classic</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<executable>true</executable>
</configuration>
</execution>
<execution>
<id>instance-0</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-0</finalName>
<executable>true</executable>
<classifier>exec</classifier>
<attach>false</attach>
</configuration>
</execution>
<execution>
<id>instance-1</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-1</finalName>
<executable>true</executable>
<classifier>exec</classifier>
<attach>false</attach>
</configuration>
</execution>
</executions>
</plugin>
&#13;
谢谢
答案 0 :(得分:1)
我使用 systemd :
解决了这个问题构建单个 可执行文件 jar(没有多个Spring启动插件执行,没有maven配置文件,只是常规重新打包可执行目标)
以绝对路径播放(/var/xxx/application.jar)
使用以下配置创建您想要的任何/etc/systemd/system/application-{i}.service
[单位] 描述=应用 - {I} 后= syslog.target
[服务] ExecStart = / var / xxx / application.jar --server.port = 4500 {i} - logging.file = / var / log / xxx / application- {i} .log
[安装] WantedBy = multi-user.target
请注意占位符{i}以避免服务名称,linstening端口和日志文件冲突。
Systemd解决了我的问题。
注意:如果您在同一主机上运行相同的服务实例,则只关心我的问题。如果您为每个主机运行一个服务实例(通用微服务方法),则不需要所有这些配置。
希望这可以帮助任何有同样问题的人。