Note that we've always told people to drop their ears or jars into webapps/ and it "just works". If this broke, we should fix it.
We really shouldn't even have an apps/ dir in TomEE. -David On Jan 4, 2012, at 2:13 PM, [email protected] wrote: > Author: rmannibucau > Date: Wed Jan 4 22:13:21 2012 > New Revision: 1227348 > > URL: http://svn.apache.org/viewvc?rev=1227348&view=rev > Log: > managing exception through the exception manager when deploying an additional > Deployment (openejb.xml) > > Added: > > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DeploymentExceptionManager.java > - copied, changed from r1227285, > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java > Removed: > > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java > Modified: > > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java > > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java > > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java > > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java > > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java > > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java > > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java > > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java > > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java > > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java > > Modified: > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java > (original) > +++ > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java > Wed Jan 4 22:13:21 2012 > @@ -20,6 +20,8 @@ import java.util.Date; > import java.util.Properties; > > import javax.transaction.TransactionManager; > + > +import org.apache.openejb.assembler.classic.DeploymentExceptionManager; > import org.apache.openejb.cdi.CdiBuilder; > import org.apache.openejb.loader.SystemInstance; > import org.apache.openejb.spi.ApplicationServer; > @@ -83,6 +85,8 @@ public final class OpenEJB { > } > SystemInstance system = SystemInstance.get(); > > + system.setComponent(DeploymentExceptionManager.class, new > DeploymentExceptionManager()); > + > system.setComponent(ApplicationServer.class, appServer); > //OWB support. The classloader has to be able to load all OWB > components including the ones supplied by OpenEjb. > CdiBuilder.initializeOWB(getClass().getClassLoader()); > > Modified: > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java > (original) > +++ > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java > Wed Jan 4 22:13:21 2012 > @@ -409,6 +409,11 @@ public class Assembler extends Assembler > // already logged. > } catch (Throwable e) { > logger.error("appNotDeployed", e, appInfo.path); > + > + final DeploymentExceptionManager exceptionManager = > SystemInstance.get().getComponent(DeploymentExceptionManager.class); > + if (exceptionManager != null && e instanceof Exception) { > + exceptionManager.saveDelpoymentException(appInfo, > (Exception) e); > + } > } > } > } > > Copied: > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DeploymentExceptionManager.java > (from r1227285, > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java) > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DeploymentExceptionManager.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DeploymentExceptionManager.java&p1=openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java&r1=1227285&r2=1227348&rev=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java > (original) > +++ > openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DeploymentExceptionManager.java > Wed Jan 4 22:13:21 2012 > @@ -1,4 +1,4 @@ > -package org.apache.tomee.catalina; > +package org.apache.openejb.assembler.classic; > > import org.apache.openejb.assembler.classic.AppInfo; > > @@ -20,19 +20,19 @@ public class DeploymentExceptionManager > } > }; > > - public synchronized boolean hasDelpoyementFailed(AppInfo appInfo) { > + public synchronized boolean hasDelpoymentFailed(AppInfo appInfo) { > return deploymentException.containsKey(appInfo); > } > > - public synchronized Exception getDelpoyementException(AppInfo appInfo) { > + public synchronized Exception getDelpoymentException(AppInfo appInfo) { > return deploymentException.get(appInfo); > } > > - public synchronized Exception saveDelpoyementException(AppInfo appInfo, > Exception exception) { > + public synchronized Exception saveDelpoymentException(AppInfo appInfo, > Exception exception) { > return deploymentException.put(appInfo, exception); > } > > - public synchronized void clearDelpoyementException(AppInfo info) { > + public synchronized void clearDelpoymentException(AppInfo info) { > deploymentException.remove(info); > } > > > Modified: > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java > (original) > +++ > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/AbstractContainers.java > Wed Jan 4 22:13:21 2012 > @@ -28,6 +28,10 @@ public class AbstractContainers { > protected static final String tmpDir = > System.getProperty("java.io.tmpdir"); > > protected void writeToFile(File file, InputStream archive) { > + if (!file.getParentFile().exists()) { > + file.getParentFile().mkdirs(); > + } > + > try { > FileOutputStream fos = new FileOutputStream(file); > byte[] buffer = new byte[4096]; > > Modified: > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java > (original) > +++ > openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java > Wed Jan 4 22:13:21 2012 > @@ -40,6 +40,7 @@ import java.util.Properties; > */ > public class FullRestartContainer extends AbstractContainers implements > Containers { > private static final File WEBAPP_DIR = new > File(System.getProperty("openejb.home"), "webapps/"); > + private static final File APPS_DIR = new > File(System.getProperty("openejb.home"), "apps/"); > > private RemoteServer server; > private Exception exception; > @@ -60,7 +61,12 @@ public class FullRestartContainer extend > > @Override > public boolean deploy(InputStream archive, String name) throws > IOException { > - currentFile = new File(WEBAPP_DIR, name); > + if (name.endsWith("war")) { > + currentFile = new File(WEBAPP_DIR, name); > + } else { > + currentFile = new File(APPS_DIR, name); > + } > + > System.out.println(currentFile); > writeToFile(currentFile, archive); > > @@ -71,6 +77,7 @@ public class FullRestartContainer extend > e.printStackTrace(); > throw e; > } > + > return (exception = lookup().exception()) == null; > } > > > Modified: > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java > (original) > +++ > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java > Wed Jan 4 22:13:21 2012 > @@ -187,7 +187,6 @@ public class TomcatLoader implements Loa > tomcatWebAppBuilder.start(); > SystemInstance.get().setComponent(WebAppBuilder.class, > tomcatWebAppBuilder); > } > - SystemInstance.get().setComponent(DeploymentExceptionManager.class, > new DeploymentExceptionManager()); > > // Web Services will be installed into the WebDeploymentListeners list > SystemInstance.get().setComponent(WebDeploymentListeners.class, new > WebDeploymentListeners()); > > Modified: > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java > (original) > +++ > openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java > Wed Jan 4 22:13:21 2012 > @@ -47,6 +47,7 @@ import org.apache.openejb.OpenEJBExcepti > import org.apache.openejb.assembler.classic.AppInfo; > import org.apache.openejb.assembler.classic.Assembler; > import org.apache.openejb.assembler.classic.ConnectorInfo; > +import org.apache.openejb.assembler.classic.DeploymentExceptionManager; > import org.apache.openejb.assembler.classic.EjbJarInfo; > import org.apache.openejb.assembler.classic.InjectionBuilder; > import org.apache.openejb.assembler.classic.JndiEncBuilder; > @@ -597,7 +598,7 @@ public class TomcatWebAppBuilder impleme > if (System.getProperty(TOMEE_EAT_EXCEPTION_PROP) == null) > { > final TomEERuntimeException tre = new > TomEERuntimeException(e); > DeploymentExceptionManager dem = > SystemInstance.get().getComponent(DeploymentExceptionManager.class); > - dem.saveDelpoyementException(contextInfo.appInfo, > tre); > + dem.saveDelpoymentException(contextInfo.appInfo, > tre); > throw tre; > } > return; > > Modified: > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java > (original) > +++ > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java > Wed Jan 4 22:13:21 2012 > @@ -56,10 +56,12 @@ public class OpenEJBListener implements > try { > Properties properties = new Properties(); > File webappDir = findOpenEjbWar(); > - properties.setProperty("openejb.war", > webappDir.getAbsolutePath()); > - properties.setProperty("openejb.embedder.source", > getClass().getSimpleName()); > - TomcatEmbedder.embed(properties, > StandardServer.class.getClassLoader()); > - listenerInstalled = true; > + if (webappDir != null) { > + properties.setProperty("openejb.war", > webappDir.getAbsolutePath()); > + properties.setProperty("openejb.embedder.source", > getClass().getSimpleName()); > + TomcatEmbedder.embed(properties, > StandardServer.class.getClassLoader()); > + listenerInstalled = true; > + } // webapp can be found lazily in some conditions > } catch (Exception e) { > System.out.println("ERROR: OpenEJB webapp was not found"); > // e.printStackTrace(System.err); > > Modified: > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java > (original) > +++ > openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java > Wed Jan 4 22:13:21 2012 > @@ -148,7 +148,9 @@ class TomcatHook { > if( properties.getProperty("openejb.libs") == null){ > throw new NullPointerException("openejb.libs property is not > set"); > } > - > + > + final Embedder embedder = new > Embedder("org.apache.tomee.catalina.TomcatLoader"); > + SystemInstance.get().setComponent(Embedder.class, embedder); > try { > // create the loader > > @@ -159,7 +161,6 @@ class TomcatHook { > > // This guy does the magic of squishing the openejb libraries > into the parent classloader > // and kicking off the reall integration. > - Embedder embedder = new > Embedder("org.apache.tomee.catalina.TomcatLoader"); > embedder.init(properties); > } catch (Exception e) { > e.printStackTrace(); > > Modified: > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java > (original) > +++ > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java > Wed Jan 4 22:13:21 2012 > @@ -41,11 +41,11 @@ import org.apache.openejb.UndeployExcept > import org.apache.openejb.assembler.Deployer; > import org.apache.openejb.assembler.classic.AppInfo; > import org.apache.openejb.assembler.classic.Assembler; > +import org.apache.openejb.assembler.classic.DeploymentExceptionManager; > import org.apache.openejb.assembler.classic.WebAppBuilder; > import org.apache.openejb.loader.FileUtils; > import org.apache.openejb.loader.SystemInstance; > import org.apache.tomcat.util.modeler.Registry; > -import org.apache.tomee.catalina.DeploymentExceptionManager; > import org.apache.tomee.catalina.TomcatWebAppBuilder; > import org.apache.tomee.loader.TomcatHelper; > > @@ -118,10 +118,10 @@ public class WebappDeployer implements D > } > > final DeploymentExceptionManager dem = > SystemInstance.get().getComponent(DeploymentExceptionManager.class); > - if (dem.hasDelpoyementFailed(info)) { > - Exception tre = dem.getDelpoyementException(info); > + if (dem.hasDelpoymentFailed(info)) { > + Exception tre = dem.getDelpoymentException(info); > // we don't need this exceptino anymore > - dem.clearDelpoyementException(info); > + dem.clearDelpoymentException(info); > throw tre; > } > > > Modified: > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java > URL: > http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java?rev=1227348&r1=1227347&r2=1227348&view=diff > ============================================================================== > --- > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java > (original) > +++ > openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/facade/ExceptionManagerFacadeBean.java > Wed Jan 4 22:13:21 2012 > @@ -1,7 +1,7 @@ > package org.apache.tomee.catalina.facade; > > +import org.apache.openejb.assembler.classic.DeploymentExceptionManager; > import org.apache.openejb.loader.SystemInstance; > -import org.apache.tomee.catalina.DeploymentExceptionManager; > > import javax.ejb.Singleton; > import javax.ejb.TransactionManagement; > > >
