java - 如何在 Java 7 中为 RMI 配置自定义客户端套接字工厂?

标签 java sockets rmi

我为 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/

相关文章:

java - 客户端和服务器的单独控制台 (Java RMI)

java - 在 Java 中,可以在不使用 varargs 工具的情况下使用变量参数吗?

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

c - telnet 客户端在recv()后没有响应

java堆空间和消息丢失

java - RMI Server的哪一部分是用多线程实现的

java - 使用 Spring Security 登录页面进行表单验证

java - Storm Crawler中ES查询异常

sockets - sendto() + recvfrom() 缓冲区混淆数据报

java - RMI - JRMP 与 IIOP