You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/12/07 23:07:30 UTC
svn commit: r1211670 - in /openejb/trunk/openejb:
assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/
utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/
Author: rmannibucau
Date: Wed Dec 7 22:07:30 2011
New Revision: 1211670
URL: http://svn.apache.org/viewvc?rev=1211670&view=rev
Log:
trying to get back the exception which was thrown by OpenEJB when deploying it in TomEE when it was swallowed by Tomcat
Added:
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERuntimeException.java
Modified:
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
Added: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java?rev=1211670&view=auto
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java (added)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/DeploymentExceptionManager.java Wed Dec 7 22:07:30 2011
@@ -0,0 +1,39 @@
+package org.apache.tomee.catalina;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Tomcat swallows some exception when trying to deploy a war.
+ * To be able to get it back (from our Deployers for instance)
+ * we need a way to store it.
+ *
+ * @author rmannibucau
+ */
+public class DeploymentExceptionManager {
+ private static final int MAX_SIZE = Integer.getInteger("tomee.deployement-exception-max-size", 10);
+ private final Map<AppInfo, Exception> deploymentException = new LinkedHashMap<AppInfo, Exception>() {
+ @Override // just to avoid potential memory leak
+ protected boolean removeEldestEntry(Map.Entry<AppInfo, Exception> eldest) {
+ return size() > MAX_SIZE;
+ }
+ };
+
+ public synchronized boolean hasDelpoyementFailed(AppInfo appInfo) {
+ return deploymentException.containsKey(appInfo);
+ }
+
+ public synchronized Exception getDelpoyementException(AppInfo appInfo) {
+ return deploymentException.get(appInfo);
+ }
+
+ public synchronized Exception saveDelpoyementException(AppInfo appInfo, Exception exception) {
+ return deploymentException.put(appInfo, exception);
+ }
+
+ public synchronized void clearDelpoyementException(AppInfo info) {
+ deploymentException.remove(info);
+ }
+}
Added: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERuntimeException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERuntimeException.java?rev=1211670&view=auto
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERuntimeException.java (added)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERuntimeException.java Wed Dec 7 22:07:30 2011
@@ -0,0 +1,10 @@
+package org.apache.tomee.catalina;
+
+/**
+ * @author rmannibucau
+ */
+public class TomEERuntimeException extends RuntimeException {
+ public TomEERuntimeException(Throwable cause) {
+ super(cause);
+ }
+}
Modified: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1211670&r1=1211669&r2=1211670&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Wed Dec 7 22:07:30 2011
@@ -74,7 +74,7 @@ import java.util.Properties;
* <li/>
* </ul>
* <p/>
- * See {@link org.apache.openejb.config.ServiceUtils#defaultProviderURL}
+ * See {@link org.apache.openejb.config.ServiceUtils#DEFAULT_PROVIDER_URL}
*
* @version $Revision: 617255 $ $Date: 2008-01-31 13:58:36 -0800 (Thu, 31 Jan 2008) $
*/
@@ -185,6 +185,7 @@ 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/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1211670&r1=1211669&r2=1211670&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Wed Dec 7 22:07:30 2011
@@ -123,6 +123,7 @@ public class TomcatWebAppBuilder impleme
private static final Digester CONTEXT_DIGESTER = createDigester();
public static final String OPENEJB_WEBAPP_MODULE_ID = "openejb.webapp.moduleId";
+ public static final String TOMEE_EAT_EXCEPTION_PROP = "tomee.eat-exception";
/**
* Context information for web applications
@@ -573,6 +574,13 @@ public class TomcatWebAppBuilder impleme
} catch (Exception e) {
undeploy(standardContext, contextInfo);
logger.error("Unable to deploy collapsed ear in war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
+ // just to force tomee to start without EE part
+ 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);
+ throw tre;
+ }
return;
}
}
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=1211670&r1=1211669&r2=1211670&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 Dec 7 22:07:30 2011
@@ -45,6 +45,7 @@ import org.apache.openejb.assembler.clas
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;
@@ -111,7 +112,20 @@ public class WebappDeployer implements D
check();
}
- return findAppInfo(new String[] { destination.getAbsolutePath(), destinationWithoutExtension });
+ final AppInfo info = findAppInfo(new String[] { destination.getAbsolutePath(), destinationWithoutExtension });
+ if (info == null) {
+ throw new NullPointerException("appinfo not found");
+ }
+
+ final DeploymentExceptionManager dem = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
+ if (dem.hasDelpoyementFailed(info)) {
+ Exception tre = dem.getDelpoyementException(info);
+ // we don't need this exceptino anymore
+ dem.clearDelpoyementException(info);
+ throw tre;
+ }
+
+ return info;
} catch (Exception e) {
throw new OpenEJBException(e);
}
@@ -122,7 +136,7 @@ public class WebappDeployer implements D
Iterator<AppInfo> iterator = deployedApps.iterator();
while (iterator.hasNext()) {
- AppInfo appInfo = (AppInfo) iterator.next();
+ AppInfo appInfo = iterator.next();
for (String path : paths) {
if (appInfo.path.equals(path)) {
return appInfo;
@@ -144,7 +158,7 @@ public class WebappDeployer implements D
webappBuilder.checkHost(host);
}
}
- }
+ }
}
}