org.apache.tomcat.util.net
Class ServerSocketFactory

java.lang.Object
  extended byorg.apache.tomcat.util.net.ServerSocketFactory
All Implemented Interfaces:
java.lang.Cloneable
Direct Known Subclasses:
JSSESocketFactory, PureTLSSocketFactory

public abstract class ServerSocketFactory
extends java.lang.Object
implements java.lang.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, Harish Prabandham

Field Summary
protected  java.util.Hashtable attributes
           
 
Constructor Summary
protected ServerSocketFactory()
          Constructor is used only by subclasses.
 
Method Summary
abstract  java.net.Socket acceptSocket(java.net.ServerSocket socket)
          Wrapper function for accept().
abstract  java.net.ServerSocket createSocket(int port)
          Returns a server socket which uses all network interfaces on the host, and is bound to a the specified port.
abstract  java.net.ServerSocket createSocket(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.
abstract  java.net.ServerSocket createSocket(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.
static ServerSocketFactory getDefault()
          Returns a copy of the environment's default socket factory.
abstract  void handshake(java.net.Socket sock)
          Extra function to initiate the handshake.
 void initSocket(java.net.Socket s)
           
 void setAttribute(java.lang.String name, java.lang.Object value)
          General mechanism to pass attributes from the ServerConnector to the socket factory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

attributes

protected java.util.Hashtable attributes
Constructor Detail

ServerSocketFactory

protected ServerSocketFactory()
Constructor is used only by subclasses.

Method Detail

setAttribute

public void setAttribute(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


getDefault

public static ServerSocketFactory getDefault()
Returns a copy of the environment's default socket factory.


createSocket

public abstract java.net.ServerSocket createSocket(int port)
                                            throws java.io.IOException,
                                                   java.lang.InstantiationException
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.

Parameters:
port - the port to listen to
Throws:
java.io.IOException - for networking errors
java.lang.InstantiationException - for construction errors

createSocket

public abstract java.net.ServerSocket createSocket(int port,
                                                   int backlog)
                                            throws java.io.IOException,
                                                   java.lang.InstantiationException
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.

Parameters:
port - the port to listen to
backlog - how many connections are queued
Throws:
java.io.IOException - for networking errors
java.lang.InstantiationException - for construction errors

createSocket

public abstract java.net.ServerSocket createSocket(int port,
                                                   int backlog,
                                                   java.net.InetAddress ifAddress)
                                            throws java.io.IOException,
                                                   java.lang.InstantiationException
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.

Parameters:
port - the port to listen to
backlog - how many connections are queued
ifAddress - the network interface address to use
Throws:
java.io.IOException - for networking errors
java.lang.InstantiationException - for construction errors

initSocket

public void initSocket(java.net.Socket s)

acceptSocket

public abstract java.net.Socket acceptSocket(java.net.ServerSocket socket)
                                      throws java.io.IOException
Wrapper function for accept(). This allows us to trap and translate exceptions if necessary

Throws:
IOException;
java.io.IOException

handshake

public abstract void handshake(java.net.Socket sock)
                        throws java.io.IOException
Extra function to initiate the handshake. Sometimes necessary for SSL

Throws:
IOException;
java.io.IOException


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.