我已经为RMI编写了一个自定义客户端套接字工厂,因此如果防火墙导致直接套接字连接不可用,我将回退到HTTP。这适用于Java 6.在Java 7中,当我调用RMISocketFactory.setSocketFactory(mySocketFactory)时,我收到此错误消息:
java.net.SocketException:factory已定义
调用RMISocketFactory.getSocketFactory()显示已安装的工厂是com.sun.deploy.net.protocol.rmi.DeployRMISocketFactory的实例。我不能使用默认的HTTP回退机制,因为我已经为http连接定制了URL(我不能使用/ cgi / java-rmi路径)。
为什么Java 7预安装套接字工厂,当setSocketFactory()被定义为每个进程只能被调用一次?如何才能使用我自己的套接字工厂?
答案 0 :(得分:1)
您应该通过上个世纪1.2中引入的RMIClientSocketFactory机制使用每个对象的套接字工厂。