Repository: tomee
Updated Branches:
  refs/heads/master 6c3a16d5c -> f38677d14


fixing wrong ServerServlet default + adding debug option to remote EJBContainer


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c6f737d9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c6f737d9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c6f737d9

Branch: refs/heads/master
Commit: c6f737d93b0132561925996b22f083b371d870b2
Parents: 6c3a16d
Author: Romain manni-Bucau <rmannibu...@gmail.com>
Authored: Fri Jul 22 09:24:00 2016 +0200
Committer: Romain manni-Bucau <rmannibu...@gmail.com>
Committed: Fri Jul 22 09:24:00 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/config/RemoteServer.java | 22 +++++++++++-----
 .../openejb/server/httpd/ServerServlet.java     |  2 +-
 .../apache/tomee/RemoteTomEEEJBContainer.java   | 27 +++++++++++++++-----
 .../apache/tomee/RemoteTomEEEJBContainerIT.java | 21 +++++++++++++--
 4 files changed, 57 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/c6f737d9/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
index a127235..6cb1ef4 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
@@ -60,7 +60,7 @@ public class RemoteServer {
     public static final String START = "start";
     public static final String STOP = "stop";
 
-    private final boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
+    private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
     private final boolean profile = options.get("openejb.server.profile", 
false);
     private final boolean tomcat;
     private final String javaOpts = System.getProperty("java.opts");
@@ -397,22 +397,26 @@ public class RemoteServer {
             public void run() {
                 try {
                     p.waitFor();
+                    synchronized (kill) {
+                        kill.remove(p);
+                    }
                 } catch (final InterruptedException e) {
-                    //Ignore
+                    Thread.interrupted();
+                } finally {
+                    latch.countDown();
                 }
-
-                latch.countDown();
             }
         }, "process-waitFor");
 
         t.start();
 
         try {
-            if (!latch.await(10, TimeUnit.SECONDS)) {
+            if 
(!latch.await(Integer.getInteger("openejb.server.waitFor.seconds", 10), 
TimeUnit.SECONDS)) {
                 killOnExit(p);
                 throw new RuntimeException("Timeout waiting for process");
             }
         } catch (final InterruptedException e) {
+            Thread.interrupted();
             killOnExit(p);
         }
     }
@@ -685,7 +689,9 @@ public class RemoteServer {
     }
 
     private static void killOnExit(final Process p) {
-        kill.add(p);
+        synchronized (kill) {
+            kill.add(p);
+        }
     }
 
     // Shutdown hook for processes
@@ -695,6 +701,10 @@ public class RemoteServer {
         Runtime.getRuntime().addShutdownHook(new CleanUpThread());
     }
 
+    public void setDebug(final boolean debug) {
+        this.debug = debug;
+    }
+
     public static class CleanUpThread extends Thread {
         @Override
         public void run() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/c6f737d9/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServerServlet.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServerServlet.java
 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServerServlet.java
index 9f424b6..5383a34 100644
--- 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServerServlet.java
+++ 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServerServlet.java
@@ -43,7 +43,7 @@ public class ServerServlet extends HttpServlet {
         if (activatedStr != null) {
             activated = Boolean.parseBoolean(activatedStr);
         } else {
-            activated = Boolean.getBoolean(getClass().getName() + '.' + 
ACTIVATED_INIT_PARAM);
+            activated = 
Boolean.parseBoolean(System.getProperty(getClass().getName() + '.' + 
ACTIVATED_INIT_PARAM, "true"));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/c6f737d9/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
----------------------------------------------------------------------
diff --git 
a/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
 
b/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
index 8adeed7..7b89751 100644
--- 
a/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
+++ 
b/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
@@ -31,15 +31,19 @@ import javax.ejb.embeddable.EJBContainer;
 import javax.ejb.spi.EJBContainerProvider;
 import javax.naming.Context;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.validation.ValidationException;
 import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import static java.lang.Thread.sleep;
+
 public class RemoteTomEEEJBContainer extends EJBContainer {
     private static RemoteTomEEEJBContainer instance;
     private RemoteServer container;
@@ -60,7 +64,8 @@ public class RemoteTomEEEJBContainer extends EJBContainer {
         private static final List<String> CONTAINER_NAMES = 
Arrays.asList(RemoteTomEEEJBContainer.class.getName(), "tomee-remote", 
"remote-tomee");
 
         @Override
-        public EJBContainer createEJBContainer(final Map<?, ?> properties) {
+        public EJBContainer createEJBContainer(final Map<?, ?> rawProperties) {
+            final Map<?, ?> properties = rawProperties == null ? new 
HashMap<>() : rawProperties;
             final Object provider = properties.get(EJBContainer.PROVIDER);
             int ejbContainerProviders = 1;
             try {
@@ -99,6 +104,7 @@ public class RemoteTomEEEJBContainer extends EJBContainer {
             try {
                 instance = new RemoteTomEEEJBContainer();
                 instance.container = new RemoteServer();
+                
instance.container.setDebug("true".equalsIgnoreCase(String.valueOf(properties.get("debug"))));
                 
instance.container.setPortStartup(Integer.parseInt(parser.http()));
 
                 try {
@@ -113,14 +119,23 @@ public class RemoteTomEEEJBContainer extends EJBContainer 
{
 
                 instance.context = new InitialContext(new Properties() {{
                     setProperty(Context.INITIAL_CONTEXT_FACTORY, 
RemoteInitialContextFactory.class.getName());
-                    setProperty(Context.PROVIDER_URL, remoteEjb);
+                    setProperty(Context.PROVIDER_URL, 
String.valueOf(properties.containsKey(Context.PROVIDER_URL) ? 
properties.get(Context.PROVIDER_URL) : remoteEjb));
                 }});
 
                 Deployer deployer = null;
-                for (int i = 0; i < (properties.containsKey("retries") ? 
Integer.parseInt(String.class.cast(properties.get("retries"))) : 20); i++) {
-                    deployer = 
Deployer.class.cast(instance.context.lookup("openejb/DeployerBusinessRemote"));
-                    if (deployer != null) {
-                        break;
+                for (int i = 0; i < (properties.containsKey("retries") ? 
Integer.parseInt(String.class.cast(properties.get("retries"))) : 4); i++) {
+                    try {
+                        deployer = 
Deployer.class.cast(instance.context.lookup("openejb/DeployerBusinessRemote"));
+                        if (deployer != null) {
+                            break;
+                        }
+                    } catch (final NamingException ne) {
+                        try {
+                            sleep(250);
+                        } catch (final InterruptedException ie) {
+                            Thread.interrupted();
+                            break;
+                        }
                     }
                 }
                 if (deployer == null) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/c6f737d9/tomee/apache-tomee/src/test/java/org/apache/tomee/RemoteTomEEEJBContainerIT.java
----------------------------------------------------------------------
diff --git 
a/tomee/apache-tomee/src/test/java/org/apache/tomee/RemoteTomEEEJBContainerIT.java
 
b/tomee/apache-tomee/src/test/java/org/apache/tomee/RemoteTomEEEJBContainerIT.java
index 17731b9..ec1cb75 100644
--- 
a/tomee/apache-tomee/src/test/java/org/apache/tomee/RemoteTomEEEJBContainerIT.java
+++ 
b/tomee/apache-tomee/src/test/java/org/apache/tomee/RemoteTomEEEJBContainerIT.java
@@ -19,6 +19,7 @@ package org.apache.tomee;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.NetworkUtil;
+import org.junit.After;
 import org.junit.Test;
 
 import javax.ejb.embeddable.EJBContainer;
@@ -33,7 +34,20 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 public class RemoteTomEEEJBContainerIT {
-    @Test
+    private EJBContainer container;
+
+    @After
+    public void close() {
+        try {
+            if (container != null) {
+                container.close();
+            }
+        } catch (final RuntimeException re) {
+            // no-op
+        }
+    }
+
+    @Test(timeout = 300000)
     public void run() throws IOException {
         final File app = new File("target/mock/webapp");
         Files.mkdirs(app);
@@ -77,18 +91,21 @@ public class RemoteTomEEEJBContainerIT {
             "</Server>\n");
         serverXml.close();
 
-        EJBContainer container = null;
+        container = null;
         try {
             container = EJBContainer.createEJBContainer(new HashMap<Object, 
Object>() {{
                 put(EJBContainer.PROVIDER, "tomee-remote");
                 put(EJBContainer.MODULES, app.getAbsolutePath());
                 put("openejb.home", tomee.getAbsolutePath());
+                put("retries", "120");
+                put("debug", 
System.getProperty("RemoteTomEEEJBContainerIT.debug", "false"));
             }});
             final URL url = new URL("http://localhost:"; + http + 
"/webapp/index.html");
             assertEquals("Hello", IO.slurp(url));
         } finally {
             if (container != null) {
                 container.close();
+                container = null;
             }
         }
     }

Reply via email to