Enhydra 5.1 API

org.enhydra.servlet.connectionMethods.http
Class HttpConnectionMethod

java.lang.Object
  |
  +--org.enhydra.servlet.connectionMethods.StandardConnectionMethod
        |
        +--org.enhydra.servlet.connectionMethods.http.HttpConnectionMethod
All Implemented Interfaces:
ConnectionMethod, java.lang.Runnable, java.io.Serializable

public class HttpConnectionMethod
extends StandardConnectionMethod
implements java.lang.Runnable

This class implements the connection method used to accept request for servlets from an HTTP client.

Version:
1.8, 6/98
Author:
Mark Sanguinetti
See Also:
org.enhydra.servlet.connectionMethods.BasicConnectionMethod, Serialized Form

Field Summary
protected  int backlog
          The backlog parameter for the server socket.
static java.lang.String BIND_ADDR
           
protected  java.lang.String bindAddress
          IP address to bind to.
static java.lang.String CLIENT_TIMEOUT
           
protected  int clientTimeout
          The maximum time for a thread to keep a socket connection to the client for.
protected  java.lang.String cmType
          This is temporary, to support the CGI Connection method, which is simply another flavor of this class.
protected  Queue connections
          The queue for incoming connections.
static int DEFAULT_CLIENT_TIMEOUT
           
static int DEFAULT_NUM_THREADS
           
static int DEFAULT_QUEUE_SIZE
           
static int DEFAULT_THREAD_TIMEOUT
           
protected  java.lang.Thread dispatcher
          Thread handling the connections.
protected  java.lang.ThreadGroup handlers
          The thread group for HttpHandler threads.
static java.lang.String HTTP
           
protected  java.util.Vector liveThreads
          A list of references to all HttpHandler threads (active and waiting).
protected static org.apache.log4j.Logger logger
          The logging channel.
protected static org.apache.log4j.Logger loggerSys
          The logger that logs on System.out.
protected  int maxHandlers
          The maximum number of HttpHandler threads.
protected  int maxQueue
          The maximum size of the connection queue.
static java.lang.String NUM_THREADS
           
protected  int numWaiting
          The total number HttpHandler threads (active and waiting).
protected  int port
          The server port.
static java.lang.String PORT
           
static java.lang.String QUEUE_SIZE
           
protected static java.lang.String SERVER_BUSY_MSG
           
protected  java.net.ServerSocket ss
          The server socket.
static java.lang.String THREAD_TIMEOUT
           
protected  int threadTimeout
          The maximum time for an HttpHandler thread to wait for a connection.
static java.lang.String TYPE
           
 
Fields inherited from class org.enhydra.servlet.connectionMethods.StandardConnectionMethod
channelTable, filterManager, servletManager
 
Fields inherited from interface org.enhydra.servlet.connectionMethods.ConnectionMethod
disabledChannelHtml, errorHtml, noChannelHtml
 
Constructor Summary
HttpConnectionMethod()
          Default constructor used for dynamic connection method creation.
 
Method Summary
 boolean channelURLIsValid(java.lang.String channelID)
          This connection method returns valid urls.
 void destroy()
          Shut down the connection method.
 boolean equivalent(ConnectionMethod compareObject)
          Compares the port number to determine equivalency
 java.lang.String getBindAddress()
          Gets the current Bind address, if any.
 Channel getChannelByURLPrefix(java.lang.String url)
          Gets Channel data assocated with a given URL Prefix.
 java.lang.String getChannelURL(java.lang.String channelID)
          Returns the URL that a user would use to connect to this channel.
 int getClientTimeout()
          Gets the client timeout associated with this connection method.
protected  java.net.Socket getConnection()
          Returns an socket from the connection queue.
 int getMaxHandlers()
           
 int getMaxQueue()
           
 int getNumThreads()
          Gets the maximum number of handler thread associated with this connection method.
 int getPort()
           
 int getQueueSize()
          Gets the maximum queue size associated with this connection method.
 javax.servlet.Servlet getServlet(java.lang.String servletID)
          Gets a reference to the servlet associated with servletID.
 int getThreadTimeout()
          Gets the thread timeout associated with this connection method.
 java.lang.String getType()
           
 void initialize(Config connectionConfig, java.lang.String id, ServletManager servletManager, FilterManager filterManager)
          Start up.
 void initialize(java.lang.String id, ServletManager servletManager, FilterManager filterManager)
          Saves the ServletManager and FilterManager for later use.
 void run()
          Runs the HttpConnectionMethod.
 void setBindAddress(java.lang.String addr)
          Sets the current Bind address, if any.
 void setClientTimeout(int clientTimeout)
           
 void setMaxHandlers(int maxHandlers)
           
 void setMaxQueue(int maxQueue)
           
 void setPort(int port)
           
 void setThreadTimeout(int threadTimeout)
           
 void writeToConfig(Config connectionConfig, java.lang.String base)
          Write out self into config fie
 
Methods inherited from class org.enhydra.servlet.connectionMethods.StandardConnectionMethod
addChannel, addTransactionFilter, deleteChannel, disableChannel, enableChannel, getChannelIDs, getChannelStatus, getTransactionFilterIDs, getUniqueChannelName, removeTransactionFilter, resetRequestCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTTP

public static final java.lang.String HTTP
See Also:
Constant Field Values

TYPE

public static final java.lang.String TYPE
See Also:
Constant Field Values

PORT

public static final java.lang.String PORT
See Also:
Constant Field Values

BIND_ADDR

public static final java.lang.String BIND_ADDR
See Also:
Constant Field Values

NUM_THREADS

public static final java.lang.String NUM_THREADS
See Also:
Constant Field Values

QUEUE_SIZE

public static final java.lang.String QUEUE_SIZE
See Also:
Constant Field Values

THREAD_TIMEOUT

public static final java.lang.String THREAD_TIMEOUT
See Also:
Constant Field Values

CLIENT_TIMEOUT

public static final java.lang.String CLIENT_TIMEOUT
See Also:
Constant Field Values

DEFAULT_NUM_THREADS

public static final int DEFAULT_NUM_THREADS
See Also:
Constant Field Values

DEFAULT_QUEUE_SIZE

public static final int DEFAULT_QUEUE_SIZE
See Also:
Constant Field Values

DEFAULT_THREAD_TIMEOUT

public static final int DEFAULT_THREAD_TIMEOUT
See Also:
Constant Field Values

DEFAULT_CLIENT_TIMEOUT

public static final int DEFAULT_CLIENT_TIMEOUT
See Also:
Constant Field Values

SERVER_BUSY_MSG

protected static final java.lang.String SERVER_BUSY_MSG
See Also:
Constant Field Values

cmType

protected java.lang.String cmType
This is temporary, to support the CGI Connection method, which is simply another flavor of this class.


port

protected int port
The server port.


bindAddress

protected java.lang.String bindAddress
IP address to bind to.


ss

protected java.net.ServerSocket ss
The server socket.


logger

protected static org.apache.log4j.Logger logger
The logging channel.


loggerSys

protected static org.apache.log4j.Logger loggerSys
The logger that logs on System.out.


dispatcher

protected java.lang.Thread dispatcher
Thread handling the connections.


connections

protected Queue connections
The queue for incoming connections.


maxQueue

protected int maxQueue
The maximum size of the connection queue.


handlers

protected java.lang.ThreadGroup handlers
The thread group for HttpHandler threads.


maxHandlers

protected int maxHandlers
The maximum number of HttpHandler threads.


threadTimeout

protected int threadTimeout
The maximum time for an HttpHandler thread to wait for a connection.


clientTimeout

protected int clientTimeout
The maximum time for a thread to keep a socket connection to the client for.


backlog

protected int backlog
The backlog parameter for the server socket.


numWaiting

protected int numWaiting
The total number HttpHandler threads (active and waiting).


liveThreads

protected java.util.Vector liveThreads
A list of references to all HttpHandler threads (active and waiting).

Constructor Detail

HttpConnectionMethod

public HttpConnectionMethod()
Default constructor used for dynamic connection method creation.

Method Detail

destroy

public void destroy()
             throws ConnectionMethodException
Shut down the connection method. Releases the socket, so the port will be free for others to use.

Specified by:
destroy in interface ConnectionMethod
Overrides:
destroy in class StandardConnectionMethod
Throws:
ConnectionMethodException - If an error occurs.

initialize

public void initialize(Config connectionConfig,
                       java.lang.String id,
                       ServletManager servletManager,
                       FilterManager filterManager)
                throws ConnectionMethodException
Start up. Initially there are no channels. Parse the config file for connection information Saves the ServletManager and FilterManager for later use. This initialize is called from the ConnectionMethodManager when the multiserver is started. The config file contain all relevant connection information.

Specified by:
initialize in interface ConnectionMethod
Overrides:
initialize in class StandardConnectionMethod
Parameters:
connectionConfig - The portion of the config file relevant to this connection method
id - The id associated with this connection method
servletManager - The ServletManager to use to convert servletIDs into Servlets.
filterManager - The FilterManager to use to convert filterIDs into Filters.
Throws:
ConnectionMethodException - If unable to start up.
See Also:
Filter, org.enhydra.servlet.StandardConnectionMethod

initialize

public void initialize(java.lang.String id,
                       ServletManager servletManager,
                       FilterManager filterManager)
                throws ConnectionMethodException
Saves the ServletManager and FilterManager for later use. This initialize is called from the multiserver admin, when a new connection is being added or modified. The config file does not necessarly contain all connection information so this method assumes connection attributes are/were set through the get/set method pairs (as part of the bean environment).

Specified by:
initialize in interface ConnectionMethod
Overrides:
initialize in class StandardConnectionMethod
Parameters:
id - The id associated with this connection method
servletManager - The ServletManager to use to convert servletIDs into Servlets.
filterManager - The FilterManager to use to convert filterIDs into Filters.
Throws:
ConnectionMethodException - If unable to start up.
See Also:
Filter, org.enhydra.servlet.StandardConnectionMethod

writeToConfig

public void writeToConfig(Config connectionConfig,
                          java.lang.String base)
                   throws ConfigException,
                          KeywordValueException
Write out self into config fie

Specified by:
writeToConfig in interface ConnectionMethod
Overrides:
writeToConfig in class StandardConnectionMethod
Parameters:
base - The base key string
ConfigException
KeywordValueException

run

public void run()
Runs the HttpConnectionMethod.

Specified by:
run in interface java.lang.Runnable

getConnection

protected java.net.Socket getConnection()
Returns an socket from the connection queue.

Returns:
a reference to the object if successful, null otherwise.

getChannelByURLPrefix

public Channel getChannelByURLPrefix(java.lang.String url)
Gets Channel data assocated with a given URL Prefix.

Parameters:
url - The URL Prefix.
Returns:
The Channel associated with the URL Prefix.

getServlet

public javax.servlet.Servlet getServlet(java.lang.String servletID)
Gets a reference to the servlet associated with servletID.

Parameters:
servletID - The Servlet ID.
Returns:
Reference to the servlet.

getChannelURL

public java.lang.String getChannelURL(java.lang.String channelID)
                               throws ConnectionMethodException
Returns the URL that a user would use to connect to this channel.

Specified by:
getChannelURL in interface ConnectionMethod
Parameters:
channelID - The channel
Returns:
A URL string.
Throws:
ConnectionMethodException - If an error occurs, for example if the channel does not exist.

channelURLIsValid

public boolean channelURLIsValid(java.lang.String channelID)
                          throws ConnectionMethodException
This connection method returns valid urls.

Specified by:
channelURLIsValid in interface ConnectionMethod
Parameters:
channelID - The channel
Returns:
This function always returns true.
Throws:
ConnectionMethodException - If an error occurs, for example if the channel does not exist.

equivalent

public boolean equivalent(ConnectionMethod compareObject)
Compares the port number to determine equivalency

Specified by:
equivalent in interface ConnectionMethod
Overrides:
equivalent in class StandardConnectionMethod
Parameters:
compareObject - The object to compare this to
Throws:
ConnectionMethodException - If an error occurs.

getType

public java.lang.String getType()
Specified by:
getType in interface ConnectionMethod
Overrides:
getType in class StandardConnectionMethod

setPort

public void setPort(int port)

getPort

public int getPort()
Specified by:
getPort in interface ConnectionMethod

getBindAddress

public java.lang.String getBindAddress()
Gets the current Bind address, if any.


setBindAddress

public void setBindAddress(java.lang.String addr)
Sets the current Bind address, if any.


getMaxHandlers

public int getMaxHandlers()

setMaxHandlers

public void setMaxHandlers(int maxHandlers)

getMaxQueue

public int getMaxQueue()

setMaxQueue

public void setMaxQueue(int maxQueue)

getNumThreads

public int getNumThreads()
Gets the maximum number of handler thread associated with this connection method.

Returns:
numThreads.

getQueueSize

public int getQueueSize()
Gets the maximum queue size associated with this connection method.

Returns:
queueSize.

getClientTimeout

public int getClientTimeout()
Gets the client timeout associated with this connection method.

Returns:
clientTimeout.

setClientTimeout

public void setClientTimeout(int clientTimeout)

getThreadTimeout

public int getThreadTimeout()
Gets the thread timeout associated with this connection method.

Returns:
threadTimeout.

setThreadTimeout

public void setThreadTimeout(int threadTimeout)

Enhydra 5.1 API