Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.pyx4j.utils.service;
  
  
  import java.net.Socket;
  
  
Created on 12-Jun-2006 Contributing Author(s): Vlad Skarzhevskyy <vlad at unilore.com> (Inital implementation)

Author(s):
vlads
Version:
$Revision: 1 $ ($Author: vlads $) $Date: 2007-03-08 23:03:48 -0500 (Thu, 08 Mar 2007) $
 
 public abstract class SocketAcceptorService extends StopableRunnable implements RunnableBackgroundService {
 
     private static final Logger log = Logger.getLogger(SocketAcceptorService.class);
 
     private Thread serverThread;
     
     private ServerSocket serverSocket = null;
     
     private int port;
 
     private boolean useSSL = false;
     
     private int backlog= 10;
 
     
     protected SocketAcceptorService(String serviceNameint portint backlog) {
         this. = serviceName;
         this. = port;
         this. = backlog;
     }
 
     /*
      * (non-Javadoc)
      * 
      * @see com.di.service.BackgroundService#start()
      */
     public void startService() {
          = new Thread(thisthis. + "Acceptor");
         .setDaemon(true);
         .start();
     }
 
     /*
      * (non-Javadoc)
      * 
      * @see com.di.service.BackgroundService#shutdown()
      */
     public void shutdownService() {
         .debug("Shutdown " + this. + " Acceptor");
         stop();
         close();
     }
 
     public abstract void connectionAccepted(Socket sthrows IOException;
     
     /* (non-Javadoc)
      * @see java.lang.Runnable#run()
      */
     public void execute() {
         .debug("Starting " + this. + " Acceptor");
         createServerSocket();
         
         while (( != null) && (!this.)) {
             try {
                 .debug(this. + "Server accepting connection on port " + );
                 Socket s = this..accept();
                 connectionAccepted(s);
             } catch (Throwable e) {
                 if (!this.) {
                     .error(this. + "Acceptor error"e);
                 }
             }
         }
         close();
         stop();
     }
     
    
     private void close() {
         if ( != null) {
             try {
                 .close();
                  = null;
                 .debug(this. + "serverSocket closed");
             } catch (IOException e) {
                 .error("ServerSocket close error"e);
             }
        }
    }
    
    protected void finalize() {
        close();
    }
    
    private void createServerSocket() {
        if () {
            SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
            try {
                this. = factory.createServerSocket();
            } catch (Throwable e) {
                .error(this. + "Error creating ServerSocket"e);
                throw new Error("Terminate");
            }
        } else {
            try {
                this. = new ServerSocket();
            } catch (Throwable e) {
                .error(this. + "Error creating ServerSocket"e);
                throw new Error("Terminate" + this.);
            }
        }
        .info("Started " + this. + " ServerSocket on " + );
    }
New to GrepCode? Check out our FAQ X