为 Apache Axis 提供 socketfactory 对象,而不是类

发布于 2024-11-08 19:29:05 字数 675 浏览 0 评论 0原文

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

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

Axis 文档 提到可以插入自己的套接字工厂。但这种插入似乎只能通过在系统属性中提供实现类的名称来实现。

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

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

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

有什么办法可以解决这个问题吗?

In my current project, we are using Apache Axis to do remote calls via SOAP.

Now there are cases where the server host+port is not directly accessible due to firewall constraints, but there is the possibility of an SSH tunnel.

The Axis documentation mentions the possibility to plug in an own Socket factory. But this plugging in only seems to be possible by providing the name of an implementation class in a System property.

I just spent a hour or such to implement a SocketFactory (via a custom SocketImpl implementation) based on a JSch session - but this SocketFactory object is dependent on a Session object, and can't be simply instantiated independently.

I think I could somehow solve this using static variables/methods, but this certainly does not look nice.

Actually, I want to be able to provide a new SocketFactory (with another base SSH Session) for every server (or group of servers), of which might exist several at the same time - thus, it would be necessary to provide this to the ServiceLocator.

Is there some way to solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朮生 2024-11-15 19:29:05

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

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

You could open a permanent tunnel.
ssh -L1337:127.0.0.1:8080 192.168.0.x

and then connect to the local address (127.0.0.1:1337) as if it was remote.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文