2017-03-06 82 views
1

我有一個基於spring-boot的應用程序被部署到jar。它有行家多模塊項目的形式,包含以下幾個部分:春天尤里卡客戶端沒有看到配置文件中的服務器端口

  • 網絡
  • 服務
  • 模型

我的網絡模塊需要的所有其他自身建設和在其資源目錄中包含以下文件:

  • bootstrap.yml

的bootstrap.yml包含以下配置:

eureka: 
    client: 
    eureka-server-port: 8761 
server: 
    port: 8763 
    context-path: /foo-service/rest 
spring: 
    application: 
    name: foo-service 

所以我期待的是喚醒過程中會使用端口8761和寄存器本身尤里卡服務。由於某種原因,當我在調試:

org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration#eurekaInstanceConfigBean 

EurekaInstanceConfigBean的實例包含以下值:

  • 實例Id = 172.20.39.197:foo-service:8763
  • nonSecurePort = 8080

有什麼奇怪的是nonSecurePort設置在8080而不是8763上。在我的其他服務(其正常工作)中,nonSecurePortinstanceId的最後部分具有相同的值。只有在富服務中,價值纔是不同的。

的,其原因在於:

@Value("${server.port:${SERVER_PORT:${PORT:8080}}}") 
int nonSecurePort; 

找不到配置,返回默認值。但爲什麼? 我已經檢查由行家創建的foo.jar中和bootstrap.yml有在正確的位置(BOOT-INF /班/ bootstrap.yml)用正確的值...

不要任何人有任何想法可能是什麼錯誤?

+0

您能否提供一個能夠重現問題的示例? –

+0

我試圖創建,但所有簡單的樣本適合我。只有這樣,單一和複雜的應用程序才能工作。當我設法獲得更多信息立即分享到這裏。但是謝謝你! –

回答

0

的原因是以下幾點:

的應用有仍然可以通過XML加載一些老樓盤:

@Configuration 
@ImportResource("some-xml-file") // which loads properties 
class FooConfig {} 

通過xml文件加載的特性沒有定義,因此可以肯定這不是任何端口重寫的情況。不過似乎它足以干擾Spring-Boot。

小重構後:

@Configuration 
@PropertySource("properties-file") // loading properties without xml 
class FooConfig {} 

都開始工作。

0

我有同樣的問題。

幾個啓動應用程序的構建方式完全相同。使用@ImportResource的應用程序使用Eureka註冊了不正確的默認端口8080。

我無法離開@ImportResource呢。

將以下內容添加到bootstrap.yml中。

eureka: 
    instance: 
    non-secure-port: 8088 
相關問題