2011-05-19 76 views
0

在我當前的項目中,我們使用Apache Axis通過SOAP執行遠程調用。向Apache Axis提供一個socketfactory對象,而不是類

現在有些情況下,由於防火牆限制,服務器主機+端口不能直接訪問,但可能存在SSH隧道。

Axis documentation提到了插入自己的Socket factory的可能性。但是通過在System屬性中提供實現類的名稱,這種插入似乎是可能的。

我剛剛花了一個小時或這樣的實現基於JSch會話的SocketFactory(通過自定義SocketImpl實現) - 但此SocketFactory對象依賴於Session對象,並且不能簡單地實例化。

我想我可以以某種方式解決這個使用靜態變量/方法,但這當然不好看。

實際上,我希望能夠爲每個服務器(或一組服務器)提供一個新的SocketFactory(與另一個基本SSH會話),其中可能同時存在幾個 - 因此,這將是必要的將此提供給ServiceLocator。

有沒有辦法解決這個問題?

回答

1

您可以打開一個永久隧道。 ssh -L1337:127.0.0.1:8080 192.168.0.x

,然後連接到本地地址(127.0.0.1:1337),彷彿它是遠程的。

+0

感謝您的建議。我不喜歡這裏額外的開放端口(即使只在本地主機上),但是如果我沒有找到其他東西,我會使用這個(JSch變體)。 – 2011-05-19 11:49:08

+0

我用過這個,謝謝。如果有人發現一個更好的主意,我仍然是開放的。 – 2011-06-04 02:18:40

相關問題