2016-10-10 87 views
3

我有以下服務:配置覆蓋服務器端口VM參數

  1. 春雲配置服務器
  2. 尤里卡發現服務
  3. 事件服務(春季啓動的應用程序)

我使用「Config First」模式。這意味着我首先啓動配置服務器,然後啓動發現服務。

然後我運行事件服務。它從配置服務器進行配置。在配置中,我指定server.port屬性等於8081.

我看到我的事件服務正在發現服務中註冊。

問題出現在我試圖啓動一個事件服務的更多實例時。要在不同的端口上運行它,我使用-Dserver.port虛擬機參數。所以我的命令看起來像:

java -jar event-service.jar -Dserver.port=8082

但應用程序無法啓動,稱8081已在使用。看起來事件服務使用來自配置服務器的配置,並且此配置優先於VM參數。但我認爲它應該是副verca。

+0

必須有東西覆蓋項目中的服務器端口。檢查你的application.properties。同時檢查System.setProperty(「server.port」) – Snickers3192

回答

3

的命令行參數的順序是錯了:system variable必須jar文件之前:

$ java -jar -Dserver.port=8082 event-service.jar 

3種方式在命令行中指定的屬性

  • 環境變量:$ server_port=8082 java -jar event-service.jar
  • 系統變量:$ java -jar -Dserver.port=8082 event-service.jar
  • 命令行參數:$ java -jar event-service.jar --server.port=8082

請注意,對於environment variable,將dots替換爲underscores

來源:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

0

你必須改變客戶屬性被設置爲false作爲默認spring.cloud.config.override-none=true。根據文檔:

標誌,表示當allowOverride是真實的,外部性應該採取最低優先級,並沒有覆蓋任何現有 來源財產(包括本地配置文件)。默認爲false。