FileDocCategorySizeDatePackage
ServerSocketFactory.javaAPI DocApache Tomcat 6.0.146362Fri Jul 20 04:20:32 BST 2007org.apache.tomcat.util.net

ServerSocketFactory

public abstract class ServerSocketFactory extends Object implements Cloneable
This class creates server sockets. It may be subclassed by other factories, which create particular types of server sockets. This provides a general framework for the addition of public socket-level functionality. It it is the server side analogue of a socket factory, and similarly provides a way to capture a variety of policies related to the sockets being constructed.

Like socket factories, Server Socket factory instances have two categories of methods. First are methods used to create sockets. Second are methods which set properties used in the production of sockets, such as networking options. There is also an environment specific default server socket factory; frameworks will often use their own customized factory.


It may be desirable to move this interface into the java.net package, so that is not an extension but the preferred interface. Should this be serializable, making it a JavaBean which can be saved along with its networking configuration?
author
db@eng.sun.com
author
Harish Prabandham

Fields Summary
private static ServerSocketFactory
theFactory
protected Hashtable
attributes
Constructors Summary
protected ServerSocketFactory()
Constructor is used only by subclasses.


               

       
        /* NOTHING */
    
Methods Summary
public abstract java.net.SocketacceptSocket(java.net.ServerSocket socket)
Wrapper function for accept(). This allows us to trap and translate exceptions if necessary

exception
IOException;

public abstract java.net.ServerSocketcreateSocket(int port)
Returns a server socket which uses all network interfaces on the host, and is bound to a the specified port. The socket is configured with the socket options (such as accept timeout) given to this factory.

param
port the port to listen to
exception
IOException for networking errors
exception
InstantiationException for construction errors

public abstract java.net.ServerSocketcreateSocket(int port, int backlog)
Returns a server socket which uses all network interfaces on the host, is bound to a the specified port, and uses the specified connection backlog. The socket is configured with the socket options (such as accept timeout) given to this factory.

param
port the port to listen to
param
backlog how many connections are queued
exception
IOException for networking errors
exception
InstantiationException for construction errors

public abstract java.net.ServerSocketcreateSocket(int port, int backlog, java.net.InetAddress ifAddress)
Returns a server socket which uses only the specified network interface on the local host, is bound to a the specified port, and uses the specified connection backlog. The socket is configured with the socket options (such as accept timeout) given to this factory.

param
port the port to listen to
param
backlog how many connections are queued
param
ifAddress the network interface address to use
exception
IOException for networking errors
exception
InstantiationException for construction errors

public static synchronized org.apache.tomcat.util.net.ServerSocketFactorygetDefault()
Returns a copy of the environment's default socket factory.

        //
        // optimize typical case:  no synch needed
        //

        if (theFactory == null) {
            //
            // Different implementations of this method could
            // work rather differently.  For example, driving
            // this from a system property, or using a different
            // implementation than JavaSoft's.
            //

            theFactory = new DefaultServerSocketFactory ();
        }

        try {
            return (ServerSocketFactory) theFactory.clone ();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException (e.getMessage ());
        }
    
public abstract voidhandshake(java.net.Socket sock)
Extra function to initiate the handshake. Sometimes necessary for SSL

exception
IOException;

public voidinitSocket(java.net.Socket s)

    
public voidsetAttribute(java.lang.String name, java.lang.Object value)
General mechanism to pass attributes from the ServerConnector to the socket factory. Note that the "prefered" mechanism is to use bean setters and explicit methods, but this allows easy configuration via server.xml or simple Properties

	if( name!=null && value !=null)
	    attributes.put( name, value );