org.globus.net
Class BaseServer

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

public abstract class BaseServer
extends java.lang.Object
implements java.lang.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  java.net.ServerSocket _server
           
protected  boolean accept
           
protected  org.globus.gsi.gssapi.auth.Authorization authorization
           
protected  org.ietf.jgss.GSSCredential credentials
           
protected  org.globus.net.AbstractServerDeactivator deactivator
          A handler for the deactivation framework.
protected  java.lang.Integer gssMode
           
static int SO_TIMEOUT
          Socket timeout in milliseconds.
protected  int timeout
           
protected  java.lang.String url
           
 
Constructor Summary
BaseServer()
           
BaseServer(boolean secure, int port)
           
BaseServer(org.ietf.jgss.GSSCredential cred, int port)
           
BaseServer(int port)
           
 
Method Summary
 org.ietf.jgss.GSSCredential getCredentials()
           
 java.lang.String getHost()
          Returns hostname of this server.
 java.lang.String getHostname()
          Returns hostname of this server
 int getPort()
          Returns port of this server
 java.lang.String getProtocol()
           
 int getTimeout()
           
 java.lang.String getURL()
          Returns url of this server
protected abstract  void handleConnection(java.net.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(org.globus.gsi.gssapi.auth.Authorization auth)
           
 void setGssMode(java.lang.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  java.net.Socket wrapSocket(java.net.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 java.net.ServerSocket _server

url

protected java.lang.String url

credentials

protected org.ietf.jgss.GSSCredential credentials

authorization

protected org.globus.gsi.gssapi.auth.Authorization authorization

gssMode

protected java.lang.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 java.io.IOException
Throws:
java.io.IOException

BaseServer

public BaseServer(int port)
           throws java.io.IOException
Throws:
java.io.IOException

BaseServer

public BaseServer(org.ietf.jgss.GSSCredential cred,
                  int port)
           throws java.io.IOException
Throws:
java.io.IOException

BaseServer

public BaseServer(boolean secure,
                  int port)
           throws java.io.IOException
Throws:
java.io.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 org.ietf.jgss.GSSCredential getCredentials()

getProtocol

public java.lang.String getProtocol()

getURL

public java.lang.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 java.lang.String getHostname()
Returns hostname of this server

Returns:
hostname

getHost

public java.lang.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 java.lang.Runnable

wrapSocket

protected java.net.Socket wrapSocket(java.net.Socket socket)
                              throws org.ietf.jgss.GSSException
Throws:
org.ietf.jgss.GSSException

setGssMode

public void setGssMode(java.lang.Integer mode)

setAuthorization

public void setAuthorization(org.globus.gsi.gssapi.auth.Authorization auth)

handleConnection

protected abstract void handleConnection(java.net.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.