系統是兩台機器, 跑四個 web 容器, 每台機器兩個容器 。 nginx+memcached+quartz集群,web容器為 tomcat 。
web 應用中 用到spring 跑多個任務,任務只能一個容器執行,就是四個容器中只能用一個跑。 誰搶到誰跑。
本以為一個機器一個web容器的,就用IP 處理;現在一個機器兩個,所以要獲得web容器的端口號;
問題:在 web 應用中,spring 任務中 怎么獲得web容器 端口號 。因為quartz 的job execute沒有request對象?
設置需要的Key,例如Tomcat服務器:
set JAVA_OPTS=-Dreyo.localPort="8081"
編輯文件${tomact-dir}/bin/catalina.bat, 添加以下內容即可:
set JAVA_OPTS=-D<key>="<value>"
set JAVA_OPTS=-Dreyo.localPort="8081"
然后在程序取出 System.getProperty("reyo.localPort")了
下面來看一下運行的效果圖:
感謝 zqq & webit 小魚 冷月追魂簫