Class ConfigurableRMIClientSocketFactory

  • All Implemented Interfaces:
    java.io.Serializable, java.rmi.server.RMIClientSocketFactory

    public final class ConfigurableRMIClientSocketFactory
    extends java.lang.Object
    implements java.io.Serializable, java.rmi.server.RMIClientSocketFactory
    Default socket timeouts are unlikely to be suitable for cache replication. Sockets should fail fast.

    This class decorates the RMIClientSocketFactory so as to enable customisations to be placed on newly created sockets.

    Version:
    $Id$
    Author:
    Greg Luck
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      ConfigurableRMIClientSocketFactory​(java.lang.Integer socketTimeoutMillis)
      Construct a new socket factory with the given timeout.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.net.Socket createSocket​(java.lang.String host, int port)
      Create a client socket connected to the specified host and port.
      boolean equals​(java.lang.Object object)
      The standard hashCode method which is necessary for SocketFactory classes.
      static java.rmi.server.RMISocketFactory getConfiguredRMISocketFactory()
      Return the JVM-level configured RMISocketFactory.
      int hashCode()
      Implements the Object hashCode method.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ConfigurableRMIClientSocketFactory

        public ConfigurableRMIClientSocketFactory​(java.lang.Integer socketTimeoutMillis)
        Construct a new socket factory with the given timeout.
        Parameters:
        socketTimeoutMillis -
        See Also:
        Socket.setSoTimeout(int)
    • Method Detail

      • createSocket

        public java.net.Socket createSocket​(java.lang.String host,
                                            int port)
                                     throws java.io.IOException
        Create a client socket connected to the specified host and port.

        If necessary this implementation can be changed to specify the outbound address to use e.g. Socket socket = new Socket(host, port, localInterface , 0);

        Specified by:
        createSocket in interface java.rmi.server.RMIClientSocketFactory
        Parameters:
        host - the host name
        port - the port number
        Returns:
        a socket connected to the specified host and port.
        Throws:
        java.io.IOException - if an I/O error occurs during socket creation
        Since:
        1.2
      • hashCode

        public int hashCode()
        Implements the Object hashCode method.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        a hash based on socket options
      • equals

        public boolean equals​(java.lang.Object object)
        The standard hashCode method which is necessary for SocketFactory classes. Omitting this method causes RMI to quickly error out with "too many open files" errors.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        object - the comparison object
        Returns:
        equal if the classes are the same and the socket options are the name.
      • getConfiguredRMISocketFactory

        public static java.rmi.server.RMISocketFactory getConfiguredRMISocketFactory()
        Return the JVM-level configured RMISocketFactory.

        If a global socket factory has been set via the RMISocketFactory.setSocketFactory(RMISocketFactory) method then that factory will be returned. Otherwise the default socket factory as returned by RMISocketFactory.getDefaultSocketFactory() is used instead.

        Returns:
        the configured @{code RMISocketFactory