glyn 2002/06/26 05:53:06
Modified: java/src/org/apache/axis/transport/http
SimpleAxisServer.java
Log:
Tidy up retry loop in main method and avoid trying to interrupt one (!) of
the worker threads when we are about to kill the JVM.
Revision Changes Path
1.64 +19 -15
xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java
Index: SimpleAxisServer.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- SimpleAxisServer.java 25 Jun 2002 15:43:46 -0000 1.63
+++ SimpleAxisServer.java 26 Jun 2002 12:53:05 -0000 1.64
@@ -208,19 +208,20 @@
* This will interrupt any pending accept().
*/
public void stop() throws Exception {
- /* The following code, before log.info, may be unnecessary given
- * that we are about to kill the JVM.
+ /*
+ * Close the server socket cleanly, but avoid fresh accepts while
+ * the socket is closing.
*/
stopped = true;
try {
serverSocket.close();
} catch (Exception e) {
- e.printStackTrace();
- }
- if (worker != null) {
- worker.interrupt();
+ log.info(JavaUtils.getMessage("exception00"), e);
}
+
log.info(JavaUtils.getMessage("quit00", "SimpleAxisServer"));
+
+ // Kill the JVM, which will interrupt pending accepts even on linux.
System.exit(0);
}
@@ -244,21 +245,24 @@
int port = opts.getPort();
ServerSocket ss = null;
// Try five times
- for (int i=0;i<5;i++) {
+ for (int i = 0; i < 5; i++) {
try {
ss = new ServerSocket(port);
break;
} catch (java.net.BindException be){
- // At 3 second intervals.
- Thread.sleep(3000);
+ log.debug(JavaUtils.getMessage("exception00"), be);
+ if (i < 4) {
+ // At 3 second intervals.
+ Thread.sleep(3000);
+ } else {
+ throw new Exception(JavaUtils.
+ getMessage("unableToStartServer00",
+ Integer.toString(port)));
+ }
}
}
- if (ss != null){
- sas.setServerSocket(ss);
- sas.start();
- } else {
- throw new
Exception(JavaUtils.getMessage("unableToStartServer00",Integer.toString(port)));
- }
+ sas.setServerSocket(ss);
+ sas.start();
} catch (Exception e) {
log.error(JavaUtils.getMessage("exception00"), e);
return;