Package org.globus.net
Class BaseServer
- java.lang.Object
-
- org.globus.net.BaseServer
-
- All Implemented Interfaces:
Runnable
- Direct Known Subclasses:
CallbackHandler
,GassServer
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 thesetTimeout()
function.
-
-
Field Summary
Fields Modifier and Type Field Description 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
Constructors Constructor Description BaseServer()
BaseServer(boolean secure, int port)
BaseServer(int port)
BaseServer(GSSCredential cred, int port)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description GSSCredential
getCredentials()
String
getHost()
Returns hostname of this server.String
getHostname()
Returns hostname of this serverint
getPort()
Returns port of this serverString
getProtocol()
int
getTimeout()
String
getURL()
Returns url of this serverprotected 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 threadsprotected void
start()
Starts the server.void
unregisterDefaultDeactivator()
Unregisters a default deactivation handler.protected Socket
wrapSocket(Socket socket)
-
-
-
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
-
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.
-
-