org.globus.net
Class BaseServer

java.lang.Object
  extended by org.globus.net.BaseServer
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
CallbackHandler, GassServer, GateKeeperServer, JobManagerServer

public abstract class BaseServer
extends Object
implements Runnable

This class provides the basics for writing various servers. Note: Sockets created by this server have a 5 minute default timeout. The timeout can be changed using the setTimeout() function.


Field Summary
protected  ServerSocket _server
           
protected  boolean accept
           
protected  Authorization authorization
           
protected  GSSCredential credentials
           
protected  org.globus.net.AbstractServerDeactivator deactivator
          A handler for the deactivation framework.
protected  Integer gssMode
           
static int SO_TIMEOUT
          Socket timeout in milliseconds.
protected  int timeout
           
protected  String url
           
 
Constructor Summary
BaseServer()
           
BaseServer(boolean secure, int port)
           
BaseServer(GSSCredential cred, int port)
           
BaseServer(int port)
           
 
Method Summary
 GSSCredential getCredentials()
           
 String getHost()
          Returns hostname of this server.
 String getHostname()
          Returns hostname of this server
 int getPort()
          Returns port of this server
 String getProtocol()
           
 int getTimeout()
           
 String getURL()
          Returns url of this server
protected abstract  void handleConnection(Socket socket)
          This method needs to be implemented by subclasses.
protected  void initialize()
          This method should be called by all subclasses.
 void registerDefaultDeactivator()
          Registers a default deactivation handler.
 void run()
           
 void setAuthorization(Authorization auth)
           
 void setGssMode(Integer mode)
           
 void setTimeout(int timeout)
          Sets timeout for the created sockets.
 void shutdown()
          Stops the server but does not stop all the client threads
protected  void start()
          Starts the server.
 void unregisterDefaultDeactivator()
          Unregisters a default deactivation handler.
protected  Socket wrapSocket(Socket socket)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SO_TIMEOUT

public static final int SO_TIMEOUT
Socket timeout in milliseconds.

See Also:
Constant Field Values

accept

protected boolean accept

_server

protected ServerSocket _server

url

protected String url

credentials

protected GSSCredential credentials

authorization

protected Authorization authorization

gssMode

protected Integer gssMode

timeout

protected int timeout

deactivator

protected org.globus.net.AbstractServerDeactivator deactivator
A handler for the deactivation framework.

Constructor Detail

BaseServer

public BaseServer()
           throws IOException
Throws:
IOException

BaseServer

public BaseServer(int port)
           throws IOException
Throws:
IOException

BaseServer

public BaseServer(GSSCredential cred,
                  int port)
           throws IOException
Throws:
IOException

BaseServer

public BaseServer(boolean secure,
                  int port)
           throws IOException
Throws:
IOException
Method Detail

initialize

protected void initialize()
This method should be called by all subclasses.


start

protected void start()
Starts the server.


setTimeout

public void setTimeout(int timeout)
Sets timeout for the created sockets. By default if not set, 5 minute timeout is used.


getTimeout

public int getTimeout()

shutdown

public void shutdown()
Stops the server but does not stop all the client threads


getCredentials

public GSSCredential getCredentials()

getProtocol

public String getProtocol()

getURL

public String getURL()
Returns url of this server

Returns:
url of this server

getPort

public int getPort()
Returns port of this server

Returns:
port number

getHostname

public String getHostname()
Returns hostname of this server

Returns:
hostname

getHost

public String getHost()
Returns hostname of this server. The format of the host conforms to RFC 2732, i.e. for a literal IPv6 address, this method will return the IPv6 address enclosed in square brackets ('[' and ']').

Returns:
hostname

run

public void run()
Specified by:
run in interface Runnable

wrapSocket

protected Socket wrapSocket(Socket socket)
                     throws GSSException
Throws:
GSSException

setGssMode

public void setGssMode(Integer mode)

setAuthorization

public void setAuthorization(Authorization auth)

handleConnection

protected abstract void handleConnection(Socket socket)
This method needs to be implemented by subclasses. Optimmaly, it should be a non-blocking call starting a separate thread to handle the client. Note that to start an SSL handshake, you need to call socket.getInput(Output) stream().


registerDefaultDeactivator

public void registerDefaultDeactivator()
Registers a default deactivation handler. It is used to shutdown the server without having a reference to the server. Call Deactivate.deactivateAll() to shutdown all registered servers.


unregisterDefaultDeactivator

public void unregisterDefaultDeactivator()
Unregisters a default deactivation handler.