Class 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 Detail

      • logger

        private static org.apache.commons.logging.Log logger
      • 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
      • secure

        private boolean secure
      • url

        protected java.lang.String url
      • serverThread

        private java.lang.Thread serverThread
      • credentials

        protected org.ietf.jgss.GSSCredential credentials
      • gssMode

        protected java.lang.Integer gssMode
      • timeout

        protected int timeout
    • 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​(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.