[英]Spring Boot Actuator port when deployed to external Tomcat container
我有一個部署到外部 Tomcat 容器(不使用嵌入式容器)的 Spring Boot 應用程序,我正在嘗試設置執行器。 問題是application.properties
中的management.port
似乎不受 Tomcat 的尊重。 當我使用嵌入式 Tomcat 運行 Spring Boot 時,它工作得很好。
例如,在application.properties
設置以下內容:
management.port=9010
嵌入式容器的工作端點
http://localhost:9010/health
在端口8080
運行的外部容器的非工作端點
http://localhost:9010/health
http://localhost:8080/health
http://localhost:9010/<appName>/health
http://localhost:8080/<appName>/health
我需要在 Tomcat 容器中進行特殊配置來公開 Spring Boot 執行器端點嗎?
我試過設置MANAGEMENT_PORT
的環境變量。 大多數(幾乎所有)可用文檔都使用嵌入式 Tomcat,因此事實證明,追蹤此問題具有挑戰性。
關於這個答案的第三條評論提供了一些可能的見解: https : //stackoverflow.com/a/28689853/2601060 ,它指向一個 GitHub 文件,表明如果未設置管理端口,它將與服務器端口相同.
我們不能為外部 Tomcat 容器指定額外的端口。 這就是原因: https : //github.com/spring-projects/spring-boot/issues/552
唯一的方法是使用上下文路徑擴展端點,比如“/management”並對其應用安全性。
是的,如果您的 application.properties 具有名為“management.port: 9001”和“server.port: 9000”的屬性。 然后您的應用程序端點將部署在端口 9000 上,執行器端點將部署在端口 9001 上。
所以這取決於我們。 我們可以使用相同的端口提及這兩個屬性,應用程序將正常工作。
您在什么 Java 版本下運行 Tomcat7?
注意這都是猜測 - 我還沒有能夠驗證這一點
如果是Java6
(我猜是因為我遇到了類似的問題),我懷疑它與以下消息有關:
信息:在 Java 6 上運行時,JSR 356 WebSocket (Java WebSocket 1.1) 支持不可用。要抑制此消息,請在 Java 7 上運行 Tomcat,從 $CATALINA_HOME/lib 中刪除 WebSocket JAR 或將 WebSocket JAR 添加到 tomcat.util $CATALINA_BASE/conf/catalina.properties 中的 .scan.DefaultJarScanner.jarsToSkip 屬性。 請注意,已棄用的 Tomcat 7 WebSocket API 將可用。
我只能猜測,Spring Boot 使用的JSR356告訴 Web App 容器“除了偵聽主應用程序的默認端口外,還偵聽執行器端點的端口X
”……這不是可在Java6
下運行...我可能錯了。
如果有人可以確認/否認這種行為,我會更新此回復。
將 Tomcat 設置為使用Java8
並刪除套接字 jar( tomcat7-websocket.jar
和websocket-api.jar
jar)后,我從 Spring收到以下消息:
osbaaEndpointWebMvcAutoConfiguration :無法在不同端口上啟動嵌入式管理容器(管理端點仍可通過 JMX 使用)
同時,@DecipherX 的解決方法(即不設置management.port=9010
)將通過默認端口公開您的執行器端點。
如果您從配置中刪除management.server.port
,則執行器將部署在外部 Tomcat 中的 servlet 上下文路徑下。
http://<--domain-->/<--servlet-context-->/actuator/health
除非已將管理端口配置為使用不同的 HTTP 端口公開端點,否則 management.endpoints.web.base-path 相對於 server.servlet.context-path(Servlet Web 應用程序)或 spring.webflux.base-path(反應式 Web 應用程序)。 如果配置了 management.server.port,則 management.endpoints.web.base-path 相對於 management.server.base-path。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.