我在一个远程对象像这样导出自己的框架中工作:UnicastRemoteObject.exportObject(this, port, csf, ssf);
这只是给定的,无法更改。我现在正在尝试包含RMIIO 库来进行远程迭代。RMIIO 使用 导出远程对象UnicastRemoteObject.exportObject(Remote, int)
,根据 Javadoc 使用 RMISocketFactory
。默认情况下,RMIIO 将端口设置为 0(任何端口)。
现在我绝对需要 RMIIO 来重用所有其他对象使用的现有 RMI 端口(它是防火墙中唯一打开的端口),并且还尊重我对套接字工厂的设置,因为 SSL 和压缩等。什么是最好的除了更改第 3 方代码之外,如何做到这一点?我正在使用 Java 8。
我曾希望有系统属性可以让我从外部控制套接字工厂,但似乎没有。
所以现在我认为我需要以RMISocketFactory.setSocketFactory(RMISocketFactory)
编程方式调用。那是对的吗?这对我来说听起来有点毛茸茸。当我这样做时,我不需要担心为 lib 指定端口,因为 RMI 会在我的套接字工厂适当地实现时自动尝试并重用它,这是否equals()
正确hashCode()
?
塞巴斯蒂安