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/17 19:10:58 UTC

svn commit: r1625691 - in /tomee/tomee/branches/tomee-1.7.x/tomee: tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee-embedded/src/main/java/org/apache/tomee/embedded/ tomee-embedded/src/test/java/org/apache/tomee/embedded/ tomee-loader/ tom...

Author: andygumbrecht
Date: Wed Sep 17 17:10:58 2014
New Revision: 1625691

URL: http://svn.apache.org/r1625691
Log:
Check for nulls.
Start Container with configuration
Shutdown container with try
Load tomcat-juli 'after' tomee-juli to preserve maven classloader
Close Container in tests.

Modified:
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/pom.xml
    tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java Wed Sep 17 17:10:58 2014
@@ -118,7 +118,13 @@ public final class TomEEClassLoaderEnric
         }
 
         // from config
-        urls.addAll(Arrays.asList(SystemInstance.get().getComponent(ClassLoaderEnricher.class).applicationEnrichment()));
+        final ClassLoaderEnricher classLoaderEnricher = SystemInstance.get().getComponent(ClassLoaderEnricher.class);
+        if (null != classLoaderEnricher) {
+            final URL[] enrichment = classLoaderEnricher.applicationEnrichment();
+            if (null != enrichment && enrichment.length > 0) {
+                urls.addAll(Arrays.asList(enrichment));
+            }
+        }
 
         return urls.toArray(new URL[urls.size()]);
     }

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Wed Sep 17 17:10:58 2014
@@ -237,7 +237,10 @@ public class TomcatLoader implements Loa
 
         // add common lib even in ear "lib" part (if the ear provides myfaces for instance)
         for (final URL url : classLoaderEnricher.enrichment(null)) { // we rely on the fact we know what the impl does with null but that's fine
-            SystemInstance.get().getComponent(ClassLoaderEnricher.class).addUrl(url);
+            final ClassLoaderEnricher enricher = SystemInstance.get().getComponent(ClassLoaderEnricher.class);
+            if (null != enricher) {
+                enricher.addUrl(url);
+            }
         }
 
         // optional services

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java Wed Sep 17 17:10:58 2014
@@ -146,7 +146,7 @@ public class Container implements Closea
     }
 
     public void start() throws Exception {
-        if (base == null) {
+        if (base == null || !base.exists()) {
             setup(configuration);
         }
 
@@ -341,10 +341,22 @@ public class Container implements Closea
     }
 
     public void stop() throws Exception {
-        tomcat.stop();
-        tomcat.destroy();
-        deleteTree(base);
-        base = null;
+        try {
+            tomcat.stop();
+        } catch (final LifecycleException e) {
+            e.printStackTrace();
+        }
+        try {
+            tomcat.destroy();
+        } catch (final LifecycleException e) {
+            e.printStackTrace();
+        }
+        try {
+            deleteTree(base);
+        } catch (final Exception e) {
+            e.printStackTrace();
+        }
+
         OpenEJB.destroy();
         // don't set base = null here to be able to use base after to clean up from outside of this class
     }

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java Wed Sep 17 17:10:58 2014
@@ -20,8 +20,6 @@ package org.apache.tomee.embedded;
 import org.apache.commons.io.FileUtils;
 import org.apache.openejb.config.DeploymentsResolver;
 import org.apache.openejb.loader.IO;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
 import org.junit.Test;
 
 import javax.ejb.embeddable.EJBContainer;
@@ -43,14 +41,20 @@ public class EmbeddedTomEEContainerTest 
         p.setProperty(EJBContainer.PROVIDER, EmbeddedTomEEContainer.class.getName());
         p.put(EJBContainer.MODULES, war.getAbsolutePath());
         p.setProperty(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT, "-1");
+        EJBContainer container = null;
         try {
-            final EJBContainer container = EJBContainer.createEJBContainer(p);
+            container = EJBContainer.createEJBContainer(p);
             assertNotNull(container);
             assertNotNull(container.getContext());
             final URL url = new URL("http://127.0.0.1:" + System.getProperty(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT) + "/test/index.html");
-            assertEquals("true", IO.readProperties(url).getProperty("ok"));
-            container.close();
+            assertEquals("true", getOk(url, 5));
+
         } finally {
+
+            if (container != null) {
+                container.close();
+            }
+
             try {
                 FileUtils.forceDelete(war);
             } catch (final IOException e) {
@@ -59,18 +63,38 @@ public class EmbeddedTomEEContainerTest 
         }
     }
 
+    private String getOk(final URL url, final int tries) throws Exception {
+        try {
+            return IO.readProperties(url).getProperty("ok");
+        } catch (final IOException e) {
+            if (tries > 0) {
+                Thread.sleep(1000);
+                return getOk(url, tries - 1);
+            } else {
+                throw e;
+            }
+        }
+    }
+
     @Test
     public void classpath() throws Exception {
         final Properties p = new Properties();
         p.setProperty(EJBContainer.PROVIDER, EmbeddedTomEEContainer.class.getName());
         p.setProperty(DeploymentsResolver.CLASSPATH_INCLUDE, ".*tomee-embedded.*");
         p.setProperty(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT, "-1");
-        final EJBContainer container = EJBContainer.createEJBContainer(p);
-        assertNotNull(container);
-        final ABean bean = ABean.class.cast(container.getContext().lookup("java:global/tomee-embedded/ABean"));
-        assertNotNull(bean);
-        assertEquals("ok", bean.embedded());
-        container.close();
+        EJBContainer container = null;
+        try {
+            container = EJBContainer.createEJBContainer(p);
+            assertNotNull(container);
+            assertNotNull(container.getContext());
+            final ABean bean = ABean.class.cast(container.getContext().lookup("java:global/tomee-embedded/ABean"));
+            assertNotNull(bean);
+            assertEquals("ok", bean.embedded());
+        } finally {
+            if (container != null) {
+                container.close();
+            }
+        }
     }
 
     private File createWar() throws IOException {

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/pom.xml?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/pom.xml (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/pom.xml Wed Sep 17 17:10:58 2014
@@ -56,6 +56,12 @@
       <scope>compile</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-juli</artifactId>
+      <version>${tomcat.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>tomee-common</artifactId>
       <version>${project.version}</version>

Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java?rev=1625691&r1=1625690&r2=1625691&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java Wed Sep 17 17:10:58 2014
@@ -16,13 +16,13 @@
  */
 package org.apache.tomee.loader;
 
-import java.util.Properties;
-import java.util.Enumeration;
-import java.io.File;
 import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
+import java.io.File;
+import java.util.Enumeration;
+import java.util.Properties;
 
 /**
  * The sole purpose of this class is to call the {@link TomcatEmbedder#embed} method
@@ -30,9 +30,9 @@ import javax.servlet.http.HttpServlet;
  * This class gets the location of this webapp and assumes that it is
  * the tomee.war file then calls the embedder.
  *
- * This method of bootstrapping is mutually exclussive to the {@link OpenEJBListener} approach
+ * This method of bootstrapping is mutually exclusive to the {@link OpenEJBListener} approach
  */
-@Deprecated // use tomee-overlay-runner or another way to ensure you deterministicly work
+@Deprecated // use tomee-overlay-runner or another way to ensure you work deterministically
 public class LoaderServlet extends HttpServlet {
     
     //Default serial version id