Author: rmannibucau
Date: Tue Nov  6 00:20:35 2012
New Revision: 1406018

URL: http://svn.apache.org/viewvc?rev=1406018&view=rev
Log:
trying to early init ejb which are asked by cdi (extensions) before being 
started

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java

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=1406018&r1=1406017&r2=1406018&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
 Tue Nov  6 00:20:35 2012
@@ -113,7 +113,6 @@ import org.apache.webbeans.spi.ContextsS
 import org.apache.webbeans.spi.LoaderService;
 import org.apache.webbeans.spi.ResourceInjectionService;
 import org.apache.webbeans.spi.ScannerService;
-import org.apache.webbeans.spi.SingletonService;
 import org.apache.webbeans.spi.TransactionService;
 import org.apache.webbeans.spi.adaptor.ELAdaptor;
 import org.apache.xbean.finder.ResourceFinder;
@@ -791,6 +790,8 @@ public class Assembler extends Assembler
 
             appContext.getBeanContexts().addAll(allDeployments);
 
+            final Collection<BeanContext> alreadyDeployedBeanContexts = 
Arrays.asList(containerSystem.deployments());
+
             new CdiBuilder().build(appInfo, appContext, allDeployments);
 
             ensureWebBeansContext(appContext);
@@ -802,6 +803,10 @@ public class Assembler extends Assembler
             if (start) {
                 // deploy
                 for (BeanContext deployment : allDeployments) {
+                    if (alreadyDeployedBeanContexts.contains(deployment)) {
+                        continue;
+                    }
+
                     try {
                         Container container = deployment.getContainer();
                         container.deploy(deployment);
@@ -821,6 +826,10 @@ public class Assembler extends Assembler
 
                 // start
                 for (BeanContext deployment : allDeployments) {
+                    if (alreadyDeployedBeanContexts.contains(deployment)) {
+                        continue;
+                    }
+
                     try {
                         Container container = deployment.getContainer();
                         container.start(deployment);

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=1406018&r1=1406017&r2=1406018&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
 Tue Nov  6 00:20:35 2012
@@ -294,7 +294,17 @@ public abstract class EjbHomeProxyHandle
     }
 
     protected Object create(Class interfce, Method method, Object[] args, 
Object proxy) throws Throwable {
-        ProxyInfo proxyInfo = (ProxyInfo) container.invoke(deploymentID, 
interfaceType, interfce, method, args, null);
+        if (container.getBeanContext(deploymentID) == null) {
+            final BeanContext bc = getBeanContext();
+            synchronized (bc) {
+                if (container.getBeanContext(deploymentID) == null) {
+                    container.deploy(bc);
+                    container.start(bc);
+                }
+            }
+        }
+
+        final ProxyInfo proxyInfo = (ProxyInfo) container.invoke(deploymentID, 
interfaceType, interfce, method, args, null);
         assert proxyInfo != null : "Container returned a null ProxyInfo: 
ContainerID=" + container.getContainerID();
         return createProxy(proxyInfo.getPrimaryKey(), getMainInterface());
     }


Reply via email to