You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/10/01 18:57:03 UTC

svn commit: r1392442 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java

Author: rmannibucau
Date: Mon Oct  1 16:57:03 2012
New Revision: 1392442

URL: http://svn.apache.org/viewvc?rev=1392442&view=rev
Log:
TOMEE-441 tries was not used

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/main/java/org/apache/openejb/config/RemoteServer.java?rev=1392442&r1=1392441&r2=1392442&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  1 16:57:03 2012
@@ -504,33 +504,35 @@ public class RemoteServer {
         public void run() {
             long sleep = 0; // recall immediately shutdown (win issue)
             int tries = MAX_TRIES;
-            try {
-                Thread.sleep(sleep);
-                sleep += SLEEP_INC;
-                if (server != null) {
-                    server.exitValue();
-                }
-            } catch (IllegalThreadStateException itse) {
-                tries--;
-                if (tries == 0) {
+            while (tries > 0) {
+                try {
+                    Thread.sleep(sleep);
+                    sleep += SLEEP_INC;
                     if (server != null) {
-                        // not yet terminated, kill
-                        server.destroy();
+                        server.exitValue();
+                    }
+                    break; // server == null or exitValue returned (= process stopped)
+                } catch (IllegalThreadStateException itse) {
+                    tries--;
+                    if (tries == 0) { // kill if possible
+                        if (server != null) {
+                            server.destroy();
+                            try {
+                                server.waitFor();
+                            } catch (InterruptedException e) {
+                                // no-op
+                            }
+                        }
+                    } else { // under windows we sometimes need to send shutdown multiple times (see connect())
                         try {
-                            server.waitFor();
-                        } catch (InterruptedException e) {
+                            shutdown();
+                        } catch (Exception e) {
                             // no-op
                         }
                     }
-                } else { // under windows we sometimes need to send shutdown multiple times
-                    try {
-                        shutdown();
-                    } catch (Exception e) {
-                        // no-op
-                    }
+                } catch (InterruptedException e) {
+                    // no-op
                 }
-            } catch (InterruptedException e) {
-                // no-op
             }
         }
     }