我为 RMI 编写了一个自定义客户端套接字工厂,因此,如果由于防火墙而导致直接套接字连接不可用,我会回退到 HTTP。这在 Java 6 中效果很好。在 Java 7 中,当我调用 RMISocketFactory.setSocketFactory( mySocketFactory ) 时,我收到以下错误消息:
java.net.SocketException:工厂已定义
调用 RMISocketFactory.getSocketFactory() 显示安装的工厂是 com.sun.deploy.net.protocol.rmi.DeployRMISocketFactory 的实例。我无法使用默认的 HTTP 回退机制,因为我已经自定义了 http 连接的 URL(我无法使用/cgi/java-rmi 路径)。
当 setSocketFactory() 被定义为每个进程只能调用一次时,为什么 Java 7 预安装了套接字工厂?我怎样才能让它使用我自己的套接字工厂?
最佳答案
您应该通过上世纪 1.2 中引入的 RMIClientSocketFactory 机制来使用每个对象的套接字工厂。
关于java - 如何在 Java 7 中为 RMI 配置自定义客户端套接字工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755034/