我正在使用4臺機器的Glassfish羣集。Glassfish:如何知道羣集中的哪臺機器正在處理請求
我也使用遠程EJB來調用一個方法到這個集羣。當我調用該方法時,這四臺機器中的一臺會對其進行處理。我想知道哪一個。 因此,我創建一個遠程EJB來獲取機器的標識符。有了這個,我可以知道哪臺機器正在處理我的請求。 問題是我如何爲每臺機器分配一個ID?
我正在使用4臺機器的Glassfish羣集。Glassfish:如何知道羣集中的哪臺機器正在處理請求
我也使用遠程EJB來調用一個方法到這個集羣。當我調用該方法時,這四臺機器中的一臺會對其進行處理。我想知道哪一個。 因此,我創建一個遠程EJB來獲取機器的標識符。有了這個,我可以知道哪臺機器正在處理我的請求。 問題是我如何爲每臺機器分配一個ID?
如何使用機器本身的主機名或IP?
InetAddress.getLocalHost().getHostName();
InetAddress.getLocalHost().getAddress();
http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html
注意:如果有問題的機器有多個網絡接口,我不認爲有是界面通過這些方法返回的任何保證。
這是一個更好的解決方案,與機器
ManagementFactory.getRuntimeMXBean().getName();
的主機名。例如顯示進程的PID: 958 @我的機器
編輯: 作爲jgitter,這是不是更好的解決方案。另一個解決方案。抱歉。
謝謝,我認爲這是最簡單的想法。 否則,我也想過在啓動時使用單例生成一個隨機數。我會嘗試你的解決方案,謝謝! – ZouBi