0

在我当前的项目中,我们使用 Apache Axis 通过 SOAP 进行远程调用。

现在有些情况下,由于防火墙限制,服务器主机+端口不能直接访问,但有可能是 SSH 隧道。

Axis 文档提到了插入自己的Socket 工厂的可能性。但是这种插入似乎只能通过在 System 属性中提供实现类的名称来实现。

我刚刚花了一个小时左右的时间来实现一个基于 JSch 会话的 SocketFactory(通过自定义的 SocketImpl 实现)——但是这个 SocketFactory 对象依赖于一个 Session 对象,不能简单地独立实例化。

我想我可以使用静态变量/方法以某种方式解决这个问题,但这肯定看起来不太好。

实际上,我希望能够为每个服务器(或服务器组)提供一个新的 SocketFactory(带有另一个基本 SSH 会话),其中可能同时存在多个 - 因此,有必要将其提供给服务定位器。

有没有办法解决这个问题?

4

1 回答 1

1

你可以打开一个永久隧道。 ssh -L1337:127.0.0.1:8080 192.168.0.x

然后连接到本地地址(127.0.0.1:1337),就好像它是远程的一样。

于 2011-05-19T02:06:33.020 回答