JavaTM Platform
Standard Ed. 6

java.rmi.server
类 RMISocketFactory

java.lang.Object
  继承者 java.rmi.server.RMISocketFactory
所有已实现的接口:
RMIClientSocketFactory, RMIServerSocketFactory

public abstract class RMISocketFactory
     
extends Object
implements RMIClientSocketFactory, RMIServerSocketFactory

RMISocketFactory 实例由 RMI 运行时使用,以便获得 RMI 调用所需的客户机和服务器套接字。应用程序可以使用 setSocketFactory 方法来请求 RMI 运行时使用其套接字工厂实例而不是使用默认的实现。

所用的默认套接字工厂实现通过三层方法来创建客户机套接字。首先,尝试进行到远程 VM 的直接套接字连接。如果该操作失败(因防火墙的问题),则运行时使用具有服务器显式端口号的 HTTP。如果防火墙不允许此类型的通信,则服务器上的 cgi-bin 脚本的 HTTP 用于 POST(发送)该 RMI 调用。

从以下版本开始:
JDK1.1

构造方法摘要
RMISocketFactory()
          构造一个 RMISocketFactory
 
方法摘要
abstract  ServerSocket createServerSocket(int port)
          在指定端口上(端口 0 指示匿名端口)创建服务器套接字。
abstract  Socket createSocket(String host, int port)
          创建连接到指定主机和端口的客户机套接字。
static RMISocketFactory getDefaultSocketFactory()
          返回对此 RMI 实现使用的默认套接字工厂的引用。
static RMIFailureHandler getFailureHandler()
          返回由 setFailureHandler 方法设置的套接字创建失败的处理程序。
static RMISocketFactory getSocketFactory()
          返回由 setSocketFactory 方法设置的套接字工厂。
static void setFailureHandler(RMIFailureHandler fh)
          如果服务器套接字创建失败,则设置将由 RMI 运行时调用的 failure 处理程序。
static void setSocketFactory(RMISocketFactory fac)
          设置 RMI 从中获取套接字的全局套接字工厂(如果远程对象与指定客户机和/或服务器套接字工厂无关)。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

RMISocketFactory

public RMISocketFactory()
构造一个 RMISocketFactory

从以下版本开始:
JDK1.1
方法详细信息

createSocket

public abstract Socket createSocket(String host,
                                    int port)
                             throws IOException
创建连接到指定主机和端口的客户机套接字。

指定者:
接口 RMIClientSocketFactory 中的 createSocket
参数:
host - 主机名
port - 端口号
返回:
连接到指定主机和端口的套接字。
抛出:
IOException - 如果套接字创建过程中发生 I/O 错误
从以下版本开始:
JDK1.1

createServerSocket

public abstract ServerSocket createServerSocket(int port)
                                         throws IOException
在指定端口上(端口 0 指示匿名端口)创建服务器套接字。

指定者:
接口 RMIServerSocketFactory 中的 createServerSocket
参数:
port - 端口号
返回:
指定端口上的服务器套接字
抛出:
IOException - 如果在服务器套接字创建过程中发生 I/O 错误
从以下版本开始:
JDK1.1

setSocketFactory

public static void setSocketFactory(RMISocketFactory fac)
                             throws IOException
设置 RMI 从中获取套接字的全局套接字工厂(如果远程对象与指定客户机和/或服务器套接字工厂无关)。RMI 套接字工厂只能设置一次。注:RMISocketFactory 只有在当前安全管理器允许设置套接字工厂的情况下设置;如果不允许,则抛出 SecurityException。

参数:
fac - 套接字工厂
抛出:
IOException - 如果已经设置 RMI 套接字工厂
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许进行此操作。
从以下版本开始:
JDK1.1
另请参见:
getSocketFactory(), SecurityManager.checkSetFactory()

getSocketFactory

public static RMISocketFactory getSocketFactory()
返回由 setSocketFactory 方法设置的套接字工厂。如果尚未设置套接字工厂,则返回 null

返回:
套接字工厂
从以下版本开始:
JDK1.1
另请参见:
setSocketFactory(RMISocketFactory)

getDefaultSocketFactory

public static RMISocketFactory getDefaultSocketFactory()
返回对此 RMI 实现使用的默认套接字工厂的引用。这将是在 getSocketFactory 返回 null 时由 RMI 运行时使用的工厂。

返回:
默认的 RMI 套接字工厂
从以下版本开始:
JDK1.1

setFailureHandler

public static void setFailureHandler(RMIFailureHandler fh)
如果服务器套接字创建失败,则设置将由 RMI 运行时调用的 failure 处理程序。默认情况下,如果没有安装故障处理程序且服务器套接字创建失败,则 RMI 运行时就尝试重新创建服务器套接字。

如果有安全管理器,则此方法首先调用安全管理器的 checkSetFactory 方法,以确保允许进行此操作。这可能会导致 SecurityException

参数:
fh - failure 处理程序
抛出:
SecurityException - 如果安全管理器存在并且其 checkSetFactory 方法不允许进行此操作。
从以下版本开始:
JDK1.1
另请参见:
getFailureHandler(), RMIFailureHandler.failure(Exception)

getFailureHandler

public static RMIFailureHandler getFailureHandler()
返回由 setFailureHandler 方法设置的套接字创建失败的处理程序。

参数:
failure - 处理程序
从以下版本开始:
JDK1.1
另请参见:
setFailureHandler(RMIFailureHandler)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策