You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2014/09/26 14:51:55 UTC
svn commit: r1627762 -
/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
Author: andygumbrecht
Date: Fri Sep 26 12:51:55 2014
New Revision: 1627762
URL: http://svn.apache.org/r1627762
Log:
TOMEE-1364 - Check for disconnect.
Modified:
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1627762&r1=1627761&r2=1627762&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Fri Sep 26 12:51:55 2014
@@ -24,6 +24,7 @@ import org.apache.openejb.util.Join;
import org.apache.openejb.util.Pipe;
import java.io.File;
+import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.net.InetSocketAddress;
@@ -517,13 +518,13 @@ public class RemoteServer {
System.out.print("Waiting for TomEE shutdown.");
}
- final boolean b = connect(portShutdown, tries);
+ final boolean b = disconnect(portShutdown, tries);
if (verbose) {
System.out.println();
}
- if (b) {
+ if (!b) {
//We need to know about this
System.out.println("SEVERE: Failed to shutdown TomEE running on port " + portStartup + " using shutdown port: " + portShutdown);
}
@@ -587,14 +588,14 @@ public class RemoteServer {
} catch (final Exception e) {
if (tries < 2) {
if (verbose) {
- System.out.println("[] CONNECT ATTEMPTS FAILED ( " + (this.tries - tries) + " tries)");
+ System.out.println("[] CONNECT ATTEMPTS FAILED ( " + (this.tries - tries) + " ATTEMPTS)");
}
return false;
} else {
try {
Thread.sleep(1000);
} catch (final Exception e2) {
- e.printStackTrace();
+ e2.printStackTrace();
}
return connect(port, --tries);
}
@@ -611,6 +612,49 @@ public class RemoteServer {
return true;
}
+ private boolean disconnect(final int port, int tries) {
+ if (verbose) {
+ System.out.println("[] DISCONNECT ATTEMPT " + (this.tries - tries) + " on port: " + port);
+ }
+
+ Socket s = null;
+ try {
+ s = new Socket();
+ s.connect(new InetSocketAddress(this.host, port), 500);
+ s.getOutputStream().close();
+
+ if (verbose) {
+ System.out.println("[] NOT DISCONNECTED AFTER ( " + (this.tries - tries) + " ATTEMPTS)");
+ }
+
+ if (tries < 2) {
+ //Give up
+ return false;
+ } else {
+ try {
+ Thread.sleep(1000);
+ } catch (final Exception e2) {
+ e2.printStackTrace();
+ }
+
+ return disconnect(port, --tries);
+ }
+
+ } catch (final IOException e) {
+ //This is what we want
+ } finally {
+ if (s != null) {
+ try {
+ s.close();
+ } catch (final Exception ignored) {
+ // no-op
+ }
+ }
+ }
+
+ return true;
+ }
+
public void setAdditionalClasspath(final String additionalClasspath) {
this.additionalClasspath = additionalClasspath;
}