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);
}
}