Author: rmannibucau
Date: Mon Aug 20 19:23:28 2012
New Revision: 1375174
URL: http://svn.apache.org/viewvc?rev=1375174&view=rev
Log:
ensuring some socket are closed + better handling of port already set in random
logic
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java?rev=1375174&r1=1375173&r2=1375174&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
Mon Aug 20 19:23:28 2012
@@ -40,6 +40,7 @@ import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.io.File;
+import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Arrays;
@@ -176,23 +177,29 @@ public abstract class TomEEContainer<Con
OutputStream out = socket.getOutputStream();
out.write(SHUTDOWN_COMMAND.getBytes());
- waitForShutdown(10);
+ waitForShutdown(socket, 10);
} catch (Exception e) {
throw new LifecycleException("Unable to stop TomEE", e);
}
}
- protected void waitForShutdown(int tries) {
+ protected void waitForShutdown(Socket socket, int tries) {
try {
-
- Socket socket = new Socket(configuration.getHost(),
configuration.getStopPort());
OutputStream out = socket.getOutputStream();
out.close();
} catch (Exception e) {
if (tries > 2) {
Threads.sleep(2000);
- waitForShutdown(--tries);
+ waitForShutdown(socket, --tries);
+ }
+ } finally {
+ if (socket != null) {
+ try {
+ socket.close();
+ } catch (IOException ignored) {
+ // no-op
+ }
}
}
}
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml?rev=1375174&r1=1375173&r2=1375174&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
Mon Aug 20 19:23:28 2012
@@ -26,7 +26,7 @@
<property name="stopPort">-1</property>
<property name="dir">target/apache-tomee-remote</property>
<property
name="appWorkingDir">target/arquillian-test-working-dir</property>
- <property name="portRange">2000-30000</property>
+ <property name="portRange">20000-30000</property>
<property name="properties">
openejb.classloader.forced-load=org.apache.openejb.arquillian.tests
</property>
@@ -39,7 +39,7 @@
<property name="stopPort">-1</property>
<property name="dir">target/apache-tomee-remote</property>
<property
name="appWorkingDir">target/arquillian-test-working-dir</property>
- <property name="portRange">2000-30000</property>
+ <property name="portRange">20000-30000</property>
<property name="properties">
openejb.classloader.forced-load=org.apache.openejb.arquillian.tests
</property>
@@ -52,7 +52,7 @@
<property name="stopPort">-1</property>
<property name="dir">target/apache-tomee-remote</property>
<property
name="appWorkingDir">target/arquillian-test-working-dir</property>
- <property name="portRange">2000-30000</property>
+ <property name="portRange">20000-30000</property>
<property name="properties">
openejb.classloader.forced-load=org.apache.openejb.arquillian.tests.
</property>
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java?rev=1375174&r1=1375173&r2=1375174&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
Mon Aug 20 19:23:28 2012
@@ -20,6 +20,9 @@ import org.apache.openejb.arquillian.com
import org.apache.openejb.arquillian.common.TomEEConfiguration;
import org.apache.openejb.resolver.maven.VersionResolver;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @version $Rev$ $Date$
*/
@@ -101,4 +104,19 @@ public class TomEEWebappConfiguration ex
public void setAjpPort(int ajpPort) {
this.ajpPort = ajpPort;
}
+
+ @Override
+ public int[] portsAlreadySet() {
+ final List<Integer> value = new ArrayList<Integer>();
+ if (getStopPort() > 0) {
+ value.add(getStopPort());
+ }
+ if (getHttpPort() > 0) {
+ value.add(getHttpPort());
+ }
+ if (getAjpPort() > 0) {
+ value.add(getAjpPort());
+ }
+ return toInts(value);
+ }
}
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=1375174&r1=1375173&r2=1375174&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 Aug 20 19:23:28 2012
@@ -17,6 +17,7 @@
package org.apache.openejb.config;
import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.Options;
import org.apache.openejb.util.Join;
import org.apache.openejb.util.Pipe;
@@ -363,9 +364,16 @@ public class RemoteServer {
String command = "SHUTDOWN" + Character.toString((char) 0); //
SHUTDOWN + EOF
- Socket socket = new Socket(host, shutdownPort);
- OutputStream out = socket.getOutputStream();
- out.write(command.getBytes());
+ Socket socket = null;
+ try {
+ socket= new Socket(host, shutdownPort);
+ OutputStream out = socket.getOutputStream();
+ out.write(command.getBytes());
+ } finally {
+ if (socket != null) {
+ socket.close();
+ }
+ }
if (server != null) {
server.waitFor();