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());
}