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();


Reply via email to