Author: andygumbrecht
Date: Thu Sep 18 15:11:51 2014
New Revision: 1626003
URL: http://svn.apache.org/r1626003
Log:
Check for nulls.
Start Container with configuration
Use target directory if found.
Fix race condition on Container stop.
Close connector explicitly if available.
Shutdown container with try
Load tomcat-juli 'after' tomee-juli to preserve maven classloader
Close Container in tests.
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
tomee/tomee/trunk/tomee/tomee-embedded/pom.xml
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
tomee/tomee/trunk/tomee/tomee-loader/pom.xml
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderEnricher.java
Thu Sep 18 15:11:51 2014
@@ -116,7 +116,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/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
Thu Sep 18 15:11:51 2014
@@ -105,8 +105,10 @@ public class TomcatLoader implements Loa
*/
private static ServiceManager manager;
- /** other services */
- private static final List<ServerService> services = new
ArrayList<ServerService> ();
+ /**
+ * other services
+ */
+ private static final List<ServerService> services = new
ArrayList<ServerService>();
/**
* this method will be split in two to be able to use SystemInstance in
between both invocations
@@ -236,8 +238,12 @@ public class TomcatLoader implements Loa
SystemInstance.get().setComponent(WebAppEnricher.class,
classLoaderEnricher);
// 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) {
+ for (final URL url : classLoaderEnricher.enrichment(null)) { // we
rely on the fact we know what the impl does with null but that's fine
+ enricher.addUrl(url);
+ }
}
// optional services
@@ -255,7 +261,7 @@ public class TomcatLoader implements Loa
final Properties ejbServerProps = new Properties();
ejbServerProps.putAll(properties);
- for (final String prop : new String[] { "serializer", "gzip" }) { //
ensure -Dejbd.xxx are read
+ for (final String prop : new String[]{"serializer", "gzip"}) { //
ensure -Dejbd.xxx are read
final String value = SystemInstance.get().getProperty("ejbd." +
prop);
if (value != null) {
ejbServerProps.put(prop, value);
Modified: tomee/tomee/trunk/tomee/tomee-embedded/pom.xml
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/pom.xml?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-embedded/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-embedded/pom.xml Thu Sep 18 15:11:51 2014
@@ -80,10 +80,6 @@
<version>${project.version}</version>
<exclusions>
<exclusion>
- <artifactId>tomcat-juli</artifactId>
- <groupId>org.apache.tomcat</groupId>
- </exclusion>
- <exclusion>
<artifactId>javaee-api</artifactId>
<groupId>org.apache.openejb</groupId>
</exclusion>
Modified:
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
Thu Sep 18 15:11:51 2014
@@ -65,6 +65,7 @@ import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
/**
* @version $Rev$ $Date$
@@ -146,7 +147,7 @@ public class Container implements AutoCl
}
public void start() throws Exception {
- if (base == null) {
+ if (base == null || !base.exists()) {
setup(configuration);
}
@@ -257,7 +258,7 @@ public class Container implements AutoCl
if (configuration.getProperties() != null) {
properties.putAll(configuration.getProperties());
}
- if (properties.getProperty("openejb.system.apps") == null) { // will
make startup faster and it is rarely useful for embedded case
+ if (properties.getProperty("openejb.system.apps") == null) { // will
make startup faster and it is rarely useful for embedded case
properties.setProperty("openejb.system.apps", "false");
}
@@ -322,8 +323,9 @@ public class Container implements AutoCl
}
try {
- file = File.createTempFile("apache-tomee", "-home");
- } catch (final Throwable e) {
+ final File target = new File("target");
+ file = File.createTempFile("apache-tomee", "-home",
target.exists() ? target : null);
+ } catch (final Exception e) {
final File tmp = new File("tmp");
if (!tmp.exists() && !tmp.mkdirs()) {
@@ -341,10 +343,28 @@ public class Container implements AutoCl
}
public void stop() throws Exception {
- tomcat.stop();
- tomcat.destroy();
- deleteTree(base);
- base = null;
+
+ final Connector connector = tomcat.getConnector();
+ if (null != connector) {
+ connector.stop();
+ }
+
+ 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
}
@@ -509,8 +529,36 @@ public class Container implements AutoCl
}
@Override
- public void close() throws Exception {
- stop();
+ public void close() throws IOException {
+ final CountDownLatch end = new CountDownLatch(1);
+ final Container container = Container.this;
+ new Thread() {
+ {
+ setName("tomee-embedded-await-" + hashCode());
+ }
+
+ @Override
+ public void run() {
+ try {
+ container.await();
+ end.countDown();
+ } catch (final Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ }.start();
+
+ try {
+ stop();
+ } catch (final Exception e) {
+ throw new IOException("Failed to stop container", e);
+ }
+
+ try {
+ end.await();
+ } catch (final InterruptedException e) {
+ Thread.interrupted();
+ }
}
public org.apache.catalina.Context addContext(final String context, final
String path) {
Modified:
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
Thu Sep 18 15:11:51 2014
@@ -38,14 +38,15 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
public final class EmbeddedTomEEContainer extends EJBContainer {
public static final String TOMEE_EJBCONTAINER_HTTP_PORT =
"tomee.ejbcontainer.http.port";
- private static EmbeddedTomEEContainer tomEEContainer;
+ private static final AtomicReference<EmbeddedTomEEContainer>
tomEEContainer = new AtomicReference<EmbeddedTomEEContainer>();
private static final List<String> CONTAINER_NAMES =
Arrays.asList(EmbeddedTomEEContainer.class.getName(), "tomee-embedded",
"embedded-tomee");
- private Container container = new Container();
- private Collection<String> deployedIds = new ArrayList<String>();
+ private final Container container = new Container();
+ private final Collection<String> deployedIds = new ArrayList<String>();
private EmbeddedTomEEContainer() {
// no-op
@@ -58,25 +59,29 @@ public final class EmbeddedTomEEContaine
@Override
public void close() {
final Collection<Exception> errors = new ArrayList<Exception>();
- for (final String id : deployedIds) {
- if (tomEEContainer.container.getAppContexts(id) != null) {
- try {
- tomEEContainer.container.undeploy(id);
- } catch (final Exception ex) {
- Logger.getInstance(LogCategory.OPENEJB,
EmbeddedTomEEContainer.class).error(ex.getMessage(), ex);
- errors.add(ex);
+ final EmbeddedTomEEContainer etc = tomEEContainer.get();
+ if (null != etc) {
+ for (final String id : deployedIds) {
+ if (etc.container.getAppContexts(id) != null) {
+ try {
+ etc.container.undeploy(id);
+ } catch (final Exception ex) {
+ Logger.getInstance(LogCategory.OPENEJB,
EmbeddedTomEEContainer.class).error(ex.getMessage(), ex);
+ errors.add(ex);
+ }
}
}
- }
- deployedIds.clear();
- try {
- tomEEContainer.container.close();
- } catch (final Exception ex) {
- errors.add(ex);
- Logger.getInstance(LogCategory.OPENEJB,
EmbeddedTomEEContainer.class).error(ex.getMessage(), ex);
+
+ try {
+ etc.container.close();
+ } catch (final Exception ex) {
+ errors.add(ex);
+ Logger.getInstance(LogCategory.OPENEJB,
EmbeddedTomEEContainer.class).error(ex.getMessage(), ex);
+ }
}
- tomEEContainer = null;
+ deployedIds.clear();
+ tomEEContainer.set(null);
if (!errors.isEmpty()) {
throw Exceptions.newEJBException(new
TomEERuntimeException(errors.toString()));
@@ -85,7 +90,7 @@ public final class EmbeddedTomEEContaine
@Override
public Context getContext() {
- return tomEEContainer.container.getJndiContext();
+ return tomEEContainer.get().container.getJndiContext();
}
public static class EmbeddedTomEEContainerProvider implements
EJBContainerProvider {
@@ -100,20 +105,22 @@ public final class EmbeddedTomEEContaine
}
if ((provider == null && ejbContainerProviders > 1)
- || (!EmbeddedTomEEContainer.class.equals(provider)
- &&
!CONTAINER_NAMES.contains(String.valueOf(provider)))) {
+ || (!EmbeddedTomEEContainer.class.equals(provider)
+ && !CONTAINER_NAMES.contains(String.valueOf(provider)))) {
return null;
}
- if (tomEEContainer != null) {
- return tomEEContainer;
+ EmbeddedTomEEContainer etc = tomEEContainer.get();
+ if (etc != null) {
+ return etc;
}
final String appId = (String)
properties.get(EJBContainer.APP_NAME);
final Object modules = properties.get(EJBContainer.MODULES);
-
- tomEEContainer = new EmbeddedTomEEContainer();
+ etc = new EmbeddedTomEEContainer();
+ tomEEContainer.set(etc);
final Configuration configuration = new Configuration();
+
if (properties.containsKey(TOMEE_EJBCONTAINER_HTTP_PORT)) {
int port;
final Object portValue =
properties.get(TOMEE_EJBCONTAINER_HTTP_PORT);
@@ -130,51 +137,59 @@ public final class EmbeddedTomEEContaine
configuration.setHttpPort(port);
}
System.setProperty(TOMEE_EJBCONTAINER_HTTP_PORT,
Integer.toString(configuration.getHttpPort()));
- tomEEContainer.container.setup(configuration);
+ etc.container.setup(configuration);
try {
- tomEEContainer.container.start();
+ etc.container.start();
if (modules instanceof File) {
-
tomEEContainer.deployedIds.add(tomEEContainer.container.deploy(appId, ((File)
modules), appId != null).getId());
+ etc.deployedIds.add(etc.container.deploy(appId, ((File)
modules), appId != null).getId());
} else if (modules instanceof String) {
-
tomEEContainer.deployedIds.add(tomEEContainer.container.deploy(appId, new
File((String) modules), appId != null).getId());
+ etc.deployedIds.add(etc.container.deploy(appId, new
File((String) modules), appId != null).getId());
} else if (modules instanceof String[]) {
for (final String path : (String[]) modules) {
-
tomEEContainer.deployedIds.add(tomEEContainer.container.deploy(appId, new
File(path), appId != null).getId());
+ etc.deployedIds.add(etc.container.deploy(appId, new
File(path), appId != null).getId());
}
} else if (modules instanceof File[]) {
for (final File file : (File[]) modules) {
-
tomEEContainer.deployedIds.add(tomEEContainer.container.deploy(appId, file,
appId != null).getId());
+ etc.deployedIds.add(etc.container.deploy(appId, file,
appId != null).getId());
}
} else {
SystemInstance.get().getProperties().putAll(properties);
- final Collection<File> files =
tomEEContainer.container.getConfigurationFactory().getModulesFromClassPath(null,
Thread.currentThread().getContextClassLoader());
+ final Collection<File> files =
etc.container.getConfigurationFactory().getModulesFromClassPath(null,
Thread.currentThread().getContextClassLoader());
if (files.size() == 0) {
try {
- tomEEContainer.close();
+ etc.close();
} catch (final Exception e) {
// no-op
}
- tomEEContainer = null;
+ tomEEContainer.set(null);
throw Exceptions.newNoModulesFoundException();
}
for (final File file : files) {
-
tomEEContainer.deployedIds.add(tomEEContainer.container.deploy(appId, file,
appId != null).getId());
+ etc.deployedIds.add(etc.container.deploy(appId, file,
appId != null).getId());
}
}
- return tomEEContainer;
+ return etc;
} catch (final OpenEJBException | MalformedURLException e) {
- tomEEContainer.close();
+ try {
+ etc.close();
+ } catch (final Exception e1) {
+ //Ignore
+ }
throw new EJBException(e);
} catch (final ValidationException ve) {
- if (tomEEContainer != null) {
- tomEEContainer.close();
+ try {
+ etc.close();
+ } catch (final Exception e1) {
+ //Ignore
}
throw ve;
} catch (final Exception e) {
- if (tomEEContainer != null) {
- tomEEContainer.close();
+ try {
+ etc.close();
+ } catch (final Exception e1) {
+ //Ignore
}
if (e instanceof EJBException) {
throw (EJBException) e;
Modified:
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/EmbeddedTomEEContainerTest.java
Thu Sep 18 15:11:51 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;
@@ -37,20 +35,28 @@ import static org.junit.Assert.assertNot
public class EmbeddedTomEEContainerTest {
@Test
public void containerTest() throws Exception {
+
final File war = createWar();
final Properties p = new Properties();
p.setProperty(EJBContainer.APP_NAME, "test");
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, 2));
+
} finally {
+
+ if (container != null) {
+ container.close();
+ }
+
try {
FileUtils.forceDelete(war);
} catch (final IOException e) {
@@ -59,18 +65,40 @@ 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/trunk/tomee/tomee-loader/pom.xml
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/pom.xml?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/pom.xml Thu Sep 18 15:11:51 2014
@@ -42,6 +42,25 @@
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-juli</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!--The order of the next two deps is important-->
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-juli</artifactId>
+ <version>${project.version}</version>
+ <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>
Modified:
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java?rev=1626003&r1=1626002&r2=1626003&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
Thu Sep 18 15:11:51 2014
@@ -16,29 +16,31 @@
*/
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
- *
+ * <p/>
* 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
+ * <p/>
+ * 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
private static final long serialVersionUID = 1L;
-
- /**Flag for starting embedded*/
+
+ /**
+ * Flag for starting embedded
+ */
private static boolean embedded;
/**
@@ -59,22 +61,23 @@ public class LoaderServlet extends HttpS
//Gets parameters from servlet initialization parameter
final Properties properties = initParamsToProperties(config);
-
+
//Web application directory
final File webappDir = new File(getWebappPath(config));
-
+
//Sets tomee.war property
properties.setProperty("tomee.war", webappDir.getAbsolutePath());
-
+
//Sets source of the embedder
properties.setProperty("openejb.embedder.source",
getClass().getSimpleName());
//@Tomcat
TomcatEmbedder.embed(properties, config.getClass().getClassLoader());
}
-
+
/**
* Retrieves all intialization parameters for this servlet and stores them
in a java.util.Properties object.
+ *
* @param config javax.servlet.ServletConfig
* @return java.util.Properties
*/
@@ -88,10 +91,10 @@ public class LoaderServlet extends HttpS
// Load in each init-param as a property
final Enumeration<?> enumeration = config.getInitParameterNames();
System.out.println("OpenEJB Loader init-params:");
- if(!enumeration.hasMoreElements()) {
+ if (!enumeration.hasMoreElements()) {
System.out.println("\tThere are no initialization parameters.");
}
-
+
while (enumeration.hasMoreElements()) {
final String name = (String) enumeration.nextElement();
final String value = config.getInitParameter(name);
@@ -101,17 +104,17 @@ public class LoaderServlet extends HttpS
return properties;
}
+
/**
* Retrieves the absolute path of where this web application is located.
- *
- * @param config
+ *
+ * @param config ServletConfig
* @return absolute path of this webapp directory
*/
private String getWebappPath(final ServletConfig config) {
final ServletContext ctx = config.getServletContext();
final File webInf = new File(ctx.getRealPath("/WEB-INF"));
final File webapp = webInf.getParentFile();
- final String webappPath = webapp.getAbsolutePath();
- return webappPath;
+ return webapp.getAbsolutePath();
}
}