1. 程式人生 > >叢集: 如何在spring 任務中 獲得叢集中的一個web 容器的埠號?

叢集: 如何在spring 任務中 獲得叢集中的一個web 容器的埠號?

系統是兩臺機器, 跑四個 web 容器, 每臺機器兩個容器 。 nginx+memcached+quartz叢集,web容器為 tomcat 。

web 應用中 用到spring 跑多個任務,任務只能一個容器執行,就是四個容器中只能用一個跑。 誰搶到誰跑。

本以為一個機器一個web容器的,就用IP 處理;現在一個機器兩個,所以要獲得web容器的埠號;

問題:在 web 應用中,spring 任務中 怎麼獲得web容器 埠號 。因為quartz 的job execute沒有request物件?

設定需要的Key,例如Tomcat伺服器:

編輯檔案${tomact-dir}/bin/catalina.bat, 新增以下內容即可:
set JAVA_OPTS=-D<key>="<value>"

如:
set JAVA_OPTS=-Dreyo.localPort="8081" 然後在程式取出 System.getProperty("reyo.localPort")了

下面來看一下執行的效果圖:

感謝  zqq & webit 小魚 冷月追魂簫