dblevins    2004/12/17 20:42:15

  Modified:    modules/core/src/java/org/openejb/server ServiceDaemon.java
  Log:

  Revamped the service daemon quite a bit so it can take a time out on socket
  accepts as well as return the active port in the event someone uses port 0.
  
  Revision  Changes    Path
  1.13      +17 -2     
openejb/modules/core/src/java/org/openejb/server/ServiceDaemon.java
  
  Index: ServiceDaemon.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/server/ServiceDaemon.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ServiceDaemon.java        17 Dec 2004 04:55:15 -0000      1.12
  +++ ServiceDaemon.java        18 Dec 2004 01:42:15 -0000      1.13
  @@ -48,6 +48,7 @@
   import java.net.InetAddress;
   import java.net.ServerSocket;
   import java.net.Socket;
  +import java.net.SocketException;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -60,9 +61,10 @@
   
       private final SocketService socketService;
       private final InetAddress address;
  -    private final int port;
  +    private int port;
   
       private SocketListener socketListener;
  +    private int timeout;
   
       public ServiceDaemon(SocketService socketService, InetAddress address, 
int port) {
           this(null, socketService, address, port);
  @@ -85,6 +87,8 @@
           ServerSocket serverSocket;
           try {
               serverSocket = new ServerSocket(port, 20, address);
  +            port = serverSocket.getLocalPort();
  +            serverSocket.setSoTimeout(timeout);
           } catch (Exception e) {
               throw new ServiceException("Service failed to open socket", e);
           }
  @@ -107,6 +111,13 @@
           doStop();
       }
   
  +    public void setSoTimeout(int timeout) throws SocketException {
  +        this.timeout = timeout;
  +        if (socketListener != null){
  +            socketListener.setSoTimeout(timeout);
  +        }
  +    }
  +
       public String getServiceName() {
           return socketService.getName();
       }
  @@ -170,6 +181,10 @@
                   serverSocket = null;
               }
               serverService = null;
  +        }
  +
  +        public void setSoTimeout(int timeout) throws SocketException {
  +            serverSocket.setSoTimeout(timeout);
           }
       }
   
  
  
  

Reply via email to