public abstract class

RMISocketFactory

extends Object
implements RMIClientSocketFactory RMIServerSocketFactory
java.lang.Object
   ↳ java.rmi.server.RMISocketFactory
Known Direct Subclasses

Class Overview

An RMISocketFactory instance is used by the RMI runtime in order to obtain client and server sockets for RMI calls. An application may use the setSocketFactory method to request that the RMI runtime use its socket factory instance instead of the default implementation.

The default socket factory implementation used goes through a three-tiered approach to creating client sockets. First, a direct socket connection to the remote VM is attempted. If that fails (due to a firewall), the runtime uses HTTP with the explicit port number of the server. If the firewall does not allow this type of communication, then HTTP to a cgi-bin script on the server is used to POST the RMI call.

Summary

Public Constructors
RMISocketFactory()
Constructs an RMISocketFactory.
Public Methods
abstract ServerSocket createServerSocket(int port)
Create a server socket on the specified port (port 0 indicates an anonymous port).
abstract Socket createSocket(String host, int port)
Creates a client socket connected to the specified host and port.
synchronized static RMISocketFactory getDefaultSocketFactory()
Returns a reference to the default socket factory used by this RMI implementation.
synchronized static RMIFailureHandler getFailureHandler()
Returns the handler for socket creation failure set by the setFailureHandler method.
synchronized static RMISocketFactory getSocketFactory()
Returns the socket factory set by the setSocketFactory method.
synchronized static void setFailureHandler(RMIFailureHandler fh)
Sets the failure handler to be called by the RMI runtime if server socket creation fails.
synchronized static void setSocketFactory(RMISocketFactory fac)
Set the global socket factory from which RMI gets sockets (if the remote object is not associated with a specific client and/or server socket factory).
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.rmi.server.RMIClientSocketFactory
From interface java.rmi.server.RMIServerSocketFactory

Public Constructors

public RMISocketFactory ()

Constructs an RMISocketFactory.

Public Methods

public abstract ServerSocket createServerSocket (int port)

Create a server socket on the specified port (port 0 indicates an anonymous port).

Parameters
port the port number
Returns
  • the server socket on the specified port
Throws
IOException if an I/O error occurs during server socket creation

public abstract Socket createSocket (String host, int port)

Creates a client socket connected to the specified host and port.

Parameters
host the host name
port the port number
Returns
  • a socket connected to the specified host and port.
Throws
IOException if an I/O error occurs during socket creation

public static synchronized RMISocketFactory getDefaultSocketFactory ()

Returns a reference to the default socket factory used by this RMI implementation. This will be the factory used by the RMI runtime when getSocketFactory returns null.

Returns
  • the default RMI socket factory

public static synchronized RMIFailureHandler getFailureHandler ()

Returns the handler for socket creation failure set by the setFailureHandler method.

Returns
  • the failure handler

public static synchronized RMISocketFactory getSocketFactory ()

Returns the socket factory set by the setSocketFactory method. Returns null if no socket factory has been set.

Returns
  • the socket factory

public static synchronized void setFailureHandler (RMIFailureHandler fh)

Sets the failure handler to be called by the RMI runtime if server socket creation fails. By default, if no failure handler is installed and server socket creation fails, the RMI runtime does attempt to recreate the server socket.

If there is a security manager, this method first calls the security manager's checkSetFactory method to ensure the operation is allowed. This could result in a SecurityException.

Parameters
fh the failure handler
Throws
SecurityException if a security manager exists and its checkSetFactory method doesn't allow the operation.

public static synchronized void setSocketFactory (RMISocketFactory fac)

Set the global socket factory from which RMI gets sockets (if the remote object is not associated with a specific client and/or server socket factory). The RMI socket factory can only be set once. Note: The RMISocketFactory may only be set if the current security manager allows setting a socket factory; if disallowed, a SecurityException will be thrown.

Parameters
fac the socket factory
Throws
IOException if the RMI socket factory is already set
SecurityException if a security manager exists and its checkSetFactory method doesn't allow the operation.