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