You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ke...@apache.org on 2007/04/20 16:19:50 UTC

svn commit: r530823 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src: main/java/org/apache/openejb/assembler/classic/ main/java/org/apache/openejb/core/mdb/ test/java/org/apache/openejb/core/stateless/

Author: kevan
Date: Fri Apr 20 07:19:49 2007
New Revision: 530823

URL: http://svn.apache.org/viewvc?view=rev&rev=530823
Log:
OPENEJB-567 Fix potential problems in bean deployment. Delay container.deploy() until all deploymentInfo properties have been set. Also, fixed a problem with exception processing in MdbContainer

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/CrossClassLoaderProxyTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/ExtendedInjectionTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Fri Apr 20 07:19:49 2007
@@ -423,6 +423,9 @@
                     }
                 }
 
+                // now that everything is configured, deploy to the container
+                ejbJarBuilder.deploy(deployments);
+
                 for (EnterpriseBeanInfo beanInfo : ejbJar.enterpriseBeans) {
                     logger.info("Created Ejb(deployment-id="+beanInfo.ejbDeploymentId+", ejb-name="+beanInfo.ejbName+", container="+beanInfo.containerId+")");
                 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java Fri Apr 20 07:19:49 2007
@@ -59,12 +59,22 @@
 
                 Container container = (Container) props.get(ejbInfo.containerId);
                 if (container == null) throw new IllegalStateException("Container does not exist: " + ejbInfo.containerId + ".  Referenced by deployment: " + deployment.getDeploymentID());
-                container.deploy(deployment);
+                // Don't deploy to the container, yet. That will be done by deploy() once Assembler as finished configuring the DeploymentInfo
                 deployment.setContainer(container);
             } catch (Throwable e) {
                 throw new OpenEJBException("Error building bean '" + ejbInfo.ejbName + "'.  Exception: " + e.getClass() + ": " + e.getMessage(), e);
             }
         }
         return deployments;
+    }
+    
+    public void deploy(HashMap<String, DeploymentInfo> deployments) throws OpenEJBException {
+        for (DeploymentInfo deployment : deployments.values()) {
+            try {
+                deployment.getContainer().deploy(deployment);
+            } catch (Throwable t) {
+                throw new OpenEJBException("Error deploying '"+deployment.getEjbName()+"'.  Exception: "+t.getClass()+": "+t.getMessage(), t);
+            }
+        }
     }
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java Fri Apr 20 07:19:49 2007
@@ -348,7 +348,15 @@
             //    IllegalArgumentException - if the number of actual and formal parameters differ, or if an unwrapping conversion fails.
             //    NullPointerException - if the specified object is null and the method is an instance method.
             //    ExceptionInInitializerError - if the initialization provoked by this method fails.
-            mdbCallContext.txPolicy.handleSystemException(re, instance, mdbCallContext.txContext);
+            if (!isApplicationException(deploymentInfo, re)) {
+                //
+                /// System Exception ****************************
+                mdbCallContext.txPolicy.handleSystemException(re, instance, mdbCallContext.txContext);
+            } else {
+                //
+                // Application Exception ***********************
+                mdbCallContext.txPolicy.handleApplicationException(re, false, mdbCallContext.txContext);
+            }
         }
         throw new AssertionError("Should not get here");
     }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/CrossClassLoaderProxyTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/CrossClassLoaderProxyTest.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/CrossClassLoaderProxyTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/CrossClassLoaderProxyTest.java Fri Apr 20 07:19:49 2007
@@ -293,6 +293,7 @@
 
         EjbJarBuilder builder = new EjbJarBuilder(props, this.getClass().getClassLoader());
         HashMap<String, DeploymentInfo> ejbs = builder.build(jarInfo,null);
+        builder.deploy(ejbs);
         return ejbs;
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/ExtendedInjectionTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/ExtendedInjectionTest.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/ExtendedInjectionTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/ExtendedInjectionTest.java Fri Apr 20 07:19:49 2007
@@ -130,6 +130,7 @@
 
         EjbJarBuilder builder = new EjbJarBuilder(props, this.getClass().getClassLoader());
         HashMap<String, DeploymentInfo> ejbs = builder.build(jarInfo,null);
+        builder.deploy(ejbs);
         return ejbs;
     }
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java?view=diff&rev=530823&r1=530822&r2=530823
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java Fri Apr 20 07:19:49 2007
@@ -159,6 +159,7 @@
 
         EjbJarBuilder builder = new EjbJarBuilder(props, this.getClass().getClassLoader());
         HashMap<String, DeploymentInfo> ejbs = builder.build(jarInfo,null);
+        builder.deploy(ejbs);
         return ejbs;
     }