我需要一种为rmi客户端设置静态端口的方法。服务器为其连接使用固定端口,但客户端创建动态端口,但我设置了客户端套接字工厂。
我发现的根本原因是在课程" TCPChannel"中。在本课程中,我看到了这段代码:
TCPEndpoint.getLocalEndpoint(0, (RMIClientSocketFactory)null, (RMIServerSocketFactory)null);
这显然不会起作用,因为这段代码不知道我的套接字工厂。显然这个类不是RMI特有的。
问题是 - 是否有办法覆盖tcp套接字创建,使其根本不创建动态端口?
答案 0 :(得分:0)
客户端创建了一个动态端口,虽然我设置了一个客户端套接字工厂。
你设定它怎么样?无论你做了什么,你都没有做好。
但为什么要这样呢?有很多缺点。首先,它会导致来自该客户端的所有RMI调用被序列化,可能每隔两分钟,或者可能导致更频繁的任何调用以BindExceptions
失败。
另一方面,它可能对DGC产生不利影响。
并没有任何实际的好处。
显然这个类不是特定于RMI的。
什么课?有什么明显的呢?