我想我需要連接到遠程RMI對象而不通過註冊表,但我不知道如何。連接到沒有註冊表的RMI對象
我的情況是這樣的:我正在實施一個簡單的工作分配服務,它由一名分銷商和多名工人組成。分銷商有一個已註冊的RMI對象,客戶端連接到該對象以發送作業,並且工人連接以接受作業。
不幸的是,分銷商和工人主機在防火牆後面。爲了到達分銷商主機,我通過SSH隧道傳輸兩個端口(一個用於註冊表,一個用於分銷商對象),這樣我就可以從防火牆之外訪問註冊表和分銷商。爲了做到這一點,我必須在分配器JVM上設置「-Djava.rmi.server.hostname = localhost」,以便客戶端連接到本地的隧道端口,而不是實際分發主機上的端口被阻塞。
這對工作人員造成了一個問題,因爲他們需要直接連接到分銷商,但由於「本地主機」重定向,他們的行爲與客戶端類似,並嘗試連接到自己主機上的端口,這是不可用,因爲我沒有對工人進行挖掘(這是不切實際的)。
現在,如果我可以通過提供主機名和端口直接連接到遠程對象,我可以在分發服務器上註冊表和「本地主機」破解,並讓工作人員正確連接。
我該怎麼做?還是有不同的解決方案來解決這個問題?
保存了我的一天,非常感謝! – ChristophK 2011-09-22 11:06:54