4 回答

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊
運行 jar 并將端口作為輸入?yún)?shù)。
然后您可以使用兩個已知端口啟動兩個應(yīng)用程序。
java -jar myServer.jar --server.port=8080 java -jar myServer.jar --server.port=8081

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
您將在嘗試做的事情上遇到很多問題。我不認(rèn)為 Spring 被設(shè)計為允許在同一進(jìn)程中使用兩個獨立的 Spring 應(yīng)用程序。
您遇到的第一個可能是這兩個應(yīng)用程序之間的許多沖突。您會收到“javax.management.InstanceAlreadyExistsException”,因為 Spring 具有 JMX 管理 bean 注冊表的全局概念。當(dāng) Spring 應(yīng)用程序啟動時,它會以特定名稱向該服務(wù)注冊一堆東西。當(dāng)您的應(yīng)用程序的第二個副本嘗試向注冊表注冊第一個應(yīng)用程序已使用相同名稱注冊的內(nèi)容時,您會收到此錯誤。
應(yīng)用程序本身以這種方式注冊,名稱為“SpringApplication”。當(dāng)我運行我的 Spring 應(yīng)用程序時,這是第一個注冊的東西。我的猜測是您的“應(yīng)用程序”第二次嘗試使用 JMX 注冊此名稱時失敗了。
如果您真的必須以這種方式分解代碼,為什么不將這兩個應(yīng)用程序放在它們自己的構(gòu)建中并分別運行呢?或者,如果它們是完全相同的應(yīng)用程序,只需運行兩個副本,正如@Toerktumlare 在他的回答中所建議的那樣。

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊
$ mvn spring-boot:run $ env SERVER_PORT=8001 mvn spring-boot:run $ env SERVER_PORT=8002 mvn spring-boot:run
添加回答
舉報