- java.lang.Object
 -  
      
- java.rmi.server.RMISocketFactory
 
 
-  
       
- 实现的所有接口
 -  
         
RMIClientSocketFactory,RMIServerSocketFactory 
public abstract class RMISocketFactory extends Object implements RMIClientSocketFactory, RMIServerSocketFactory
RMI运行时使用RMISocketFactory实例来获取RMI调用的客户端和服务器套接字。 应用程序可以使用setSocketFactory方法请求RMI运行时使用其套接字工厂实例而不是默认实现。默认套接字工厂实现创建与远程主机的直接套接字连接。
默认套接字工厂实现创建绑定到通配符地址的服务器套接字,该地址接受来自所有网络接口的请求。
- Implementation Note:
 -  
         
您可以使用
RMISocketFactory类创建绑定到特定地址的服务器套接字,从而限制请求的来源。 例如,以下代码实现了一个套接字工厂,它将服务器套接字绑定到IPv4环回地址。 这会将RMI限制为仅处理来自本地主机的请求。将class LoopbackSocketFactory extends RMISocketFactory { public ServerSocket createServerSocket(int port) throws IOException { return new ServerSocket(port, 5, InetAddress.getByName("127.0.0.1")); } public Socket createSocket(String host, int port) throws IOException { // just call the default client socket factory return RMISocketFactory.getDefaultSocketFactory() .createSocket(host, port); } } // ... RMISocketFactory.setSocketFactory(new LoopbackSocketFactory());java.rmi.server.hostname系统属性设置为127.0.0.1以确保生成的存根连接到正确的网络接口。 - 从以下版本开始:
 - 1.1
 
 
-  
        
       
-  
             
构造方法摘要
构造方法 构造器 描述 RMISocketFactory()构造一个RMISocketFactory。 
-  
             
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract ServerSocketcreateServerSocket(int port)在指定端口上创建服务器套接字(端口0表示匿名端口)。abstract SocketcreateSocket(String host, int port)创建连接到指定主机和端口的客户端套接字。static RMISocketFactorygetDefaultSocketFactory()返回对此RMI实现使用的默认套接字工厂的引用。static RMIFailureHandlergetFailureHandler()返回由setFailureHandler方法设置的套接字创建失败的处理程序。static RMISocketFactorygetSocketFactory()返回由setSocketFactory方法设置的套接字工厂。static voidsetFailureHandler(RMIFailureHandler fh)如果服务器套接字创建失败,则设置由RMI运行时调用的故障处理程序。static voidsetSocketFactory(RMISocketFactory fac)设置RMI从中获取套接字的全局套接字工厂(如果远程对象未与特定客户端和/或服务器套接字工厂关联)。 
 -  
             
 
-  
        
       
-  
             
方法详细信息
-  
createSocket
public abstract Socket createSocket(String host, int port) throws IOException
创建连接到指定主机和端口的客户端套接字。- Specified by:
 -  
              
createSocket接口RMIClientSocketFactory - 参数
 -  
              
host- 主机名 -  
              
port- 端口号 - 结果
 - 连接到指定主机和端口的套接字。
 - 异常
 -  
              
IOException- 如果在创建套接字期间发生I / O错误 - 从以下版本开始:
 - 1.1
 
 
-  
createServerSocket
public abstract ServerSocket createServerSocket(int port) throws IOException
在指定端口上创建服务器套接字(端口0表示匿名端口)。- Specified by:
 -  
              
createServerSocket接口RMIServerSocketFactory - 参数
 -  
              
port- 端口号 - 结果
 - 指定端口上的服务器套接字
 - 异常
 -  
              
IOException- 如果在创建服务器套接字期间发生I / O错误 - 从以下版本开始:
 - 1.1
 
 
-  
setSocketFactory
public static void setSocketFactory(RMISocketFactory fac) throws IOException
设置RMI从中获取套接字的全局套接字工厂(如果远程对象未与特定客户端和/或服务器套接字工厂关联)。 RMI套接字工厂只能设置一次。 注意:只有当前安全管理器允许设置套接字工厂时才可以设置RMISocketFactory; 如果不允许,将抛出SecurityException。- 参数
 -  
              
fac- 套接字工厂 - 异常
 -  
              
IOException- 如果已设置RMI套接字工厂 -  
              
SecurityException- 如果存在安全管理器且其checkSetFactory方法不允许该操作。 - 从以下版本开始:
 - 1.1
 - 另请参见:
 -  
              
getSocketFactory(),SecurityManager.checkSetFactory() 
 
-  
getSocketFactory
public static RMISocketFactory getSocketFactory()
返回由setSocketFactory方法设置的套接字工厂。 如果未设置套接字工厂,则返回null。- 结果
 - 插座工厂
 - 从以下版本开始:
 - 1.1
 - 另请参见:
 -  
              
setSocketFactory(RMISocketFactory) 
 
-  
getDefaultSocketFactory
public static RMISocketFactory getDefaultSocketFactory()
返回对此RMI实现使用的默认套接字工厂的引用。 当getSocketFactory返回null时,这将是RMI运行时使用的工厂。- 结果
 - 默认的RMI套接字工厂
 - 从以下版本开始:
 - 1.1
 
 
-  
setFailureHandler
public static void setFailureHandler(RMIFailureHandler fh)
如果服务器套接字创建失败,则设置由RMI运行时调用的故障处理程序。 默认情况下,如果未安装任何故障处理程序且服务器套接字创建失败,则RMI运行时会尝试重新创建服务器套接字。如果存在安全管理器,则此方法首先调用安全管理器的
checkSetFactory方法以确保允许操作。 这可能会导致SecurityException。- 参数
 -  
              
fh- 失败处理程序 - 异常
 -  
              
SecurityException- 如果存在安全管理器且其checkSetFactory方法不允许该操作。 - 从以下版本开始:
 - 1.1
 - 另请参见:
 -  
              
getFailureHandler(),RMIFailureHandler.failure(Exception) 
 
-  
getFailureHandler
public static RMIFailureHandler getFailureHandler()
返回由setFailureHandler方法设置的套接字创建失败的处理程序。- 结果
 - 失败处理程序
 - 从以下版本开始:
 - 1.1
 - 另请参见:
 -  
              
setFailureHandler(RMIFailureHandler) 
 
 -  
 
 -