[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openejb-cvs
Subject:    svn commit: r1403263 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openej
From:       rmannibucau () apache ! org
Date:       2012-10-29 12:20:42
Message-ID: 20121029122042.9342223888E4 () eris ! apache ! org
[Download RAW message or body]

Author: rmannibucau
Date: Mon Oct 29 12:20:42 2012
New Revision: 1403263

URL: http://svn.apache.org/viewvc?rev=1403263&view=rev
Log:
waiting for tomee shutdown in stop method

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java


Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
                
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/mai \
n/java/org/apache/openejb/config/RemoteServer.java?rev=1403263&r1=1403262&r2=1403263&view=diff
 ==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java \
                (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java \
Mon Oct 29 12:20:42 2012 @@ -24,13 +24,9 @@ import org.apache.openejb.util.Pipe;
 import java.io.File;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
+import java.net.InetSocketAddress;
 import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
+import java.util.*;
 
 /**
  * @version $Rev$ $Date$
@@ -428,12 +424,32 @@ public class RemoteServer {
         if (!serverHasAlreadyBeenStarted) {
             try {
                 shutdown();
+
+                // check tomcat was effectively shutted down
+                // we can have some concurrent shutdown commands (catalina shutdown \
hook for instance) +                // so we can have to wait here since it is \
important to be synchronous in this method +                waitForServerShutdown();
             } catch (Exception e) {
                 e.printStackTrace(System.err);
             }
         }
     }
 
+    private void waitForServerShutdown() throws InterruptedException {
+        if (verbose) {
+            System.out.print("Waiting for TomEE shutdown.");
+        }
+        while (connect()) {
+            Thread.sleep(1000);
+            if (verbose) {
+                System.out.print(".");
+            }
+        }
+        if (verbose) {
+            System.out.println();
+        }
+    }
+
     private void forceShutdown() throws Exception {
         String fcommand = command + Character.toString((char) 0); // SHUTDOWN + EOF
 
@@ -463,7 +479,8 @@ public class RemoteServer {
 
         Socket socket = null;
         try {
-            socket = new Socket(host, shutdownPort);
+            socket = new Socket(); // wee need a timeout here
+            socket.connect(new InetSocketAddress(host, shutdownPort), 1000);
             socket.getOutputStream().close();
             if (verbose) System.out.println("[] CONNECTED IN " + (this.tries - \
tries));  } catch (Exception e) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic