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/main/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) {