2014-04-25 29 views
0

我正在使用4臺機器的Glassfish羣集。Glassfish:如何知道羣集中的哪臺機器正在處理請求

我也使用遠程EJB來調用一個方法到這個集羣。當我調用該方法時,這四臺機器中的一臺會對其進行處理。我想知道哪一個。 因此,我創建一個遠程EJB來獲取機器的標識符。有了這個,我可以知道哪臺機器正在處理我的請求。 問題是我如何爲每臺機器分配一個ID?

回答

1

如何使用機器本身的主機名或IP?

InetAddress.getLocalHost().getHostName(); 
InetAddress.getLocalHost().getAddress(); 

http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html

注意:如果有問題的機器有多個網絡接口,我不認爲有是界面通過這些方法返回的任何保證。

+0

謝謝,我認爲這是最簡單的想法。 否則,我也想過在啓動時使用單例生成一個隨機數。我會嘗試你的解決方案,謝謝! – ZouBi

1

這是一個更好的解決方案,與機器

ManagementFactory.getRuntimeMXBean().getName(); 

的主機名。例如顯示進程的PID: 958 @我的機器

編輯: 作爲jgitter,這是不是更好的解決方案。另一個解決方案。抱歉。

+0

這當然假設您已將JMX配置爲在您的服務器上運行。 「更好的解決方案」是一個延伸,它只是不同而已。 -1爲自己投票。 ;-) – jgitter

+0

我不知道。當我發現這一點時,我只是嘗試並且工作得很好。 我把你的答案作爲解決方案。 – ZouBi

+0

不用擔心。 JMX是標準的Java SE,因此幾乎所有的容器都支持它,但偶爾會默認禁用它。乾杯! – jgitter

相關問題