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 2012/12/18 22:23:34 UTC
svn commit: r1423669 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/test/java/org/apache/openejb/core/ containe...
Author: rmannibucau
Date: Tue Dec 18 21:23:33 2012
New Revision: 1423669
URL: http://svn.apache.org/viewvc?rev=1423669&view=rev
Log:
TOMEE-665 trying to deploy ejb from webapp even for ears
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/ModuleContext.java
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/assembler/classic/EjbJarBuilder.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/ModuleContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/ModuleContext.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/ModuleContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/ModuleContext.java Tue Dec 18 21:23:33 2012
@@ -28,13 +28,19 @@ public class ModuleContext extends Deplo
private final Context moduleJndiContext;
private final String uniqueId;
private final URI moduleURI;
+ private final ClassLoader loader;
- public ModuleContext(String id, URI moduleURI, String uniqueId, AppContext appContext, Context moduleJndiContext) {
+ public ModuleContext(String id, URI moduleURI, String uniqueId, AppContext appContext, Context moduleJndiContext, ClassLoader classLoader) {
super(id, appContext.getOptions());
this.moduleURI = moduleURI;
this.appContext = appContext;
this.moduleJndiContext = moduleJndiContext;
this.uniqueId = uniqueId;
+ if (classLoader != null) {
+ this.loader = classLoader;
+ } else { // in tests for instance but shouldn't be the case in main part of the program
+ this.loader = Thread.currentThread().getContextClassLoader();
+ }
}
public AppContext getAppContext() {
@@ -42,7 +48,7 @@ public class ModuleContext extends Deplo
}
public ClassLoader getClassLoader() {
- return appContext.getClassLoader();
+ return loader;
}
public Context getModuleJndiContext() {
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=1423669&r1=1423668&r2=1423669&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 Dec 18 21:23:33 2012
@@ -708,102 +708,7 @@ public class Assembler extends Assembler
List<BeanContext> allDeployments = new ArrayList<BeanContext>();
- // EJB
- final EjbJarBuilder ejbJarBuilder = new EjbJarBuilder(props, appContext);
- for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
- final HashMap<String, BeanContext> deployments = ejbJarBuilder.build(ejbJar, injections);
-
- final JaccPermissionsBuilder jaccPermissionsBuilder = new JaccPermissionsBuilder();
- final PolicyContext policyContext = jaccPermissionsBuilder.build(ejbJar, deployments);
- jaccPermissionsBuilder.install(policyContext);
-
- final TransactionPolicyFactory transactionPolicyFactory = createTransactionPolicyFactory(ejbJar, classLoader);
- for (final BeanContext beanContext : deployments.values()) {
-
- beanContext.setTransactionPolicyFactory(transactionPolicyFactory);
- }
-
- final MethodTransactionBuilder methodTransactionBuilder = new MethodTransactionBuilder();
- methodTransactionBuilder.build(deployments, ejbJar.methodTransactions);
-
- final MethodConcurrencyBuilder methodConcurrencyBuilder = new MethodConcurrencyBuilder();
- methodConcurrencyBuilder.build(deployments, ejbJar.methodConcurrency);
-
- for (final BeanContext beanContext : deployments.values()) {
- containerSystem.addDeployment(beanContext);
- }
-
- //bind ejbs into global jndi
- jndiBuilder.build(ejbJar, deployments);
-
- // setup timers/asynchronous methods - must be after transaction attributes are set
- for (final BeanContext beanContext : deployments.values()) {
- if (beanContext.getComponentType() != BeanType.STATEFUL) {
- final Method ejbTimeout = beanContext.getEjbTimeout();
- boolean timerServiceRequired = false;
- if (ejbTimeout != null) {
- // If user set the tx attribute to RequiresNew change it to Required so a new transaction is not started
- if (beanContext.getTransactionType(ejbTimeout) == TransactionType.RequiresNew) {
- beanContext.setMethodTransactionAttribute(ejbTimeout, TransactionType.Required);
- }
- timerServiceRequired = true;
- }
- for (Iterator<Map.Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
- final Map.Entry<Method, MethodContext> entry = it.next();
- final MethodContext methodContext = entry.getValue();
- if (methodContext.getSchedules().size() > 0) {
- timerServiceRequired = true;
- final Method method = entry.getKey();
- //TODO Need ?
- if (beanContext.getTransactionType(method) == TransactionType.RequiresNew) {
- beanContext.setMethodTransactionAttribute(method, TransactionType.Required);
- }
- }
- }
- if (timerServiceRequired) {
- // Create the timer
- final EjbTimerServiceImpl timerService = new EjbTimerServiceImpl(beanContext);
- //Load auto-start timers
- final TimerStore timerStore = timerService.getTimerStore();
- for (Iterator<Map.Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
- final Map.Entry<Method, MethodContext> entry = it.next();
- final MethodContext methodContext = entry.getValue();
- for (final ScheduleData scheduleData : methodContext.getSchedules()) {
- timerStore.createCalendarTimer(timerService, (String) beanContext.getDeploymentID(), null, entry.getKey(), scheduleData.getExpression(), scheduleData.getConfig());
- }
- }
- beanContext.setEjbTimerService(timerService);
- } else {
- beanContext.setEjbTimerService(new NullEjbTimerServiceImpl());
- }
- }
- //set asynchronous methods transaction
- //TODO ???
- for (Iterator<Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
- final Entry<Method, MethodContext> entry = it.next();
- if (entry.getValue().isAsynchronous() && beanContext.getTransactionType(entry.getKey()) == TransactionType.RequiresNew) {
- beanContext.setMethodTransactionAttribute(entry.getKey(), TransactionType.Required);
- }
- }
- }
- // process application exceptions
- for (final ApplicationExceptionInfo exceptionInfo : ejbJar.applicationException) {
- try {
- final Class exceptionClass = classLoader.loadClass(exceptionInfo.exceptionClass);
- for (final BeanContext beanContext : deployments.values()) {
- beanContext.addApplicationException(exceptionClass, exceptionInfo.rollback, exceptionInfo.inherited);
- }
- } catch (ClassNotFoundException e) {
- logger.error("createApplication.invalidClass", e, exceptionInfo.exceptionClass, e.getMessage());
- }
- }
-
- allDeployments.addAll(deployments.values());
- }
-
- allDeployments = sort(allDeployments);
-
- appContext.getBeanContexts().addAll(allDeployments);
+ initEjbs(classLoader, appInfo, appContext, injections, allDeployments, null);
new CdiBuilder().build(appInfo, appContext, allDeployments);
@@ -812,46 +717,7 @@ public class Assembler extends Assembler
appJndiContext.bind("app/BeanManager", appContext.getBeanManager());
appContext.getBindings().put("app/BeanManager", appContext.getBeanManager());
- // now that everything is configured, deploy to the container
- if (start) {
- final Collection<BeanContext> toStart = new ArrayList<BeanContext>();
-
- // deploy
- for (final BeanContext deployment : allDeployments) {
- try {
- final Container container = deployment.getContainer();
- if (container.getBeanContext(deployment.getDeploymentID()) == null) {
- container.deploy(deployment);
- if (!((String) deployment.getDeploymentID()).endsWith(".Comp")
- && !deployment.isHidden()) {
- logger.info("createApplication.createdEjb", deployment.getDeploymentID(), deployment.getEjbName(), container.getContainerID());
- }
- if (logger.isDebugEnabled()) {
- for (final Map.Entry<Object, Object> entry : deployment.getProperties().entrySet()) {
- logger.info("createApplication.createdEjb.property", deployment.getEjbName(), entry.getKey(), entry.getValue());
- }
- }
- toStart.add(deployment);
- }
- } catch (Throwable t) {
- throw new OpenEJBException("Error deploying '" + deployment.getEjbName() + "'. Exception: " + t.getClass() + ": " + t.getMessage(), t);
- }
- }
-
- // start
- for (final BeanContext deployment : toStart) {
- try {
- final Container container = deployment.getContainer();
- container.start(deployment);
- if (!((String) deployment.getDeploymentID()).endsWith(".Comp")
- && !deployment.isHidden()) {
- logger.info("createApplication.startedEjb", deployment.getDeploymentID(), deployment.getEjbName(), container.getContainerID());
- }
- } catch (Throwable t) {
- throw new OpenEJBException("Error starting '" + deployment.getEjbName() + "'. Exception: " + t.getClass() + ": " + t.getMessage(), t);
- }
- }
- }
+ startEjbs(start, allDeployments);
// App Client
for (final ClientInfo clientInfo : appInfo.clients) {
@@ -960,6 +826,158 @@ public class Assembler extends Assembler
}
}
+ public List<BeanContext> initEjbs(final ClassLoader classLoader, final AppInfo appInfo, final AppContext appContext,
+ final Set<Injection> injections, final List<BeanContext> allDeployments, final String webappId) throws OpenEJBException {
+ final EjbJarBuilder ejbJarBuilder = new EjbJarBuilder(props, appContext);
+ for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
+ boolean skip = false;
+ for (WebAppInfo webapp : appInfo.webApps) {
+ if ((webappId == null && ejbJar.moduleId.equals(webapp.moduleId))
+ || (webappId != null && !ejbJar.moduleId.equals(webappId))) {
+ skip = true;
+ }
+ }
+ if (skip) {
+ continue;
+ }
+
+ final HashMap<String, BeanContext> deployments = ejbJarBuilder.build(ejbJar, injections, classLoader);
+
+ final JaccPermissionsBuilder jaccPermissionsBuilder = new JaccPermissionsBuilder();
+ final PolicyContext policyContext = jaccPermissionsBuilder.build(ejbJar, deployments);
+ jaccPermissionsBuilder.install(policyContext);
+
+ final TransactionPolicyFactory transactionPolicyFactory = createTransactionPolicyFactory(ejbJar, classLoader);
+ for (final BeanContext beanContext : deployments.values()) {
+ beanContext.setTransactionPolicyFactory(transactionPolicyFactory);
+ }
+
+ final MethodTransactionBuilder methodTransactionBuilder = new MethodTransactionBuilder();
+ methodTransactionBuilder.build(deployments, ejbJar.methodTransactions);
+
+ final MethodConcurrencyBuilder methodConcurrencyBuilder = new MethodConcurrencyBuilder();
+ methodConcurrencyBuilder.build(deployments, ejbJar.methodConcurrency);
+
+ for (final BeanContext beanContext : deployments.values()) {
+ containerSystem.addDeployment(beanContext);
+ }
+
+ //bind ejbs into global jndi
+ jndiBuilder.build(ejbJar, deployments);
+
+ // setup timers/asynchronous methods - must be after transaction attributes are set
+ for (final BeanContext beanContext : deployments.values()) {
+ if (beanContext.getComponentType() != BeanType.STATEFUL) {
+ final Method ejbTimeout = beanContext.getEjbTimeout();
+ boolean timerServiceRequired = false;
+ if (ejbTimeout != null) {
+ // If user set the tx attribute to RequiresNew change it to Required so a new transaction is not started
+ if (beanContext.getTransactionType(ejbTimeout) == TransactionType.RequiresNew) {
+ beanContext.setMethodTransactionAttribute(ejbTimeout, TransactionType.Required);
+ }
+ timerServiceRequired = true;
+ }
+ for (Iterator<Map.Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
+ final Map.Entry<Method, MethodContext> entry = it.next();
+ final MethodContext methodContext = entry.getValue();
+ if (methodContext.getSchedules().size() > 0) {
+ timerServiceRequired = true;
+ final Method method = entry.getKey();
+ //TODO Need ?
+ if (beanContext.getTransactionType(method) == TransactionType.RequiresNew) {
+ beanContext.setMethodTransactionAttribute(method, TransactionType.Required);
+ }
+ }
+ }
+ if (timerServiceRequired) {
+ // Create the timer
+ final EjbTimerServiceImpl timerService = new EjbTimerServiceImpl(beanContext);
+ //Load auto-start timers
+ final TimerStore timerStore = timerService.getTimerStore();
+ for (Iterator<Map.Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
+ final Map.Entry<Method, MethodContext> entry = it.next();
+ final MethodContext methodContext = entry.getValue();
+ for (final ScheduleData scheduleData : methodContext.getSchedules()) {
+ timerStore.createCalendarTimer(timerService, (String) beanContext.getDeploymentID(), null, entry.getKey(), scheduleData.getExpression(), scheduleData.getConfig());
+ }
+ }
+ beanContext.setEjbTimerService(timerService);
+ } else {
+ beanContext.setEjbTimerService(new NullEjbTimerServiceImpl());
+ }
+ }
+ //set asynchronous methods transaction
+ //TODO ???
+ for (Iterator<Entry<Method, MethodContext>> it = beanContext.iteratorMethodContext(); it.hasNext(); ) {
+ final Entry<Method, MethodContext> entry = it.next();
+ if (entry.getValue().isAsynchronous() && beanContext.getTransactionType(entry.getKey()) == TransactionType.RequiresNew) {
+ beanContext.setMethodTransactionAttribute(entry.getKey(), TransactionType.Required);
+ }
+ }
+ }
+ // process application exceptions
+ for (final ApplicationExceptionInfo exceptionInfo : ejbJar.applicationException) {
+ try {
+ final Class exceptionClass = classLoader.loadClass(exceptionInfo.exceptionClass);
+ for (final BeanContext beanContext : deployments.values()) {
+ beanContext.addApplicationException(exceptionClass, exceptionInfo.rollback, exceptionInfo.inherited);
+ }
+ } catch (ClassNotFoundException e) {
+ logger.error("createApplication.invalidClass", e, exceptionInfo.exceptionClass, e.getMessage());
+ }
+ }
+
+ allDeployments.addAll(deployments.values());
+ }
+
+ final List<BeanContext> ejbs = sort(allDeployments);
+ appContext.getBeanContexts().addAll(ejbs);
+ return ejbs;
+ }
+
+ public void startEjbs(final boolean start, final List<BeanContext> allDeployments) throws OpenEJBException {
+ // now that everything is configured, deploy to the container
+ if (start) {
+ final Collection<BeanContext> toStart = new ArrayList<BeanContext>();
+
+ // deploy
+ for (final BeanContext deployment : allDeployments) {
+ try {
+ final Container container = deployment.getContainer();
+ if (container.getBeanContext(deployment.getDeploymentID()) == null) {
+ container.deploy(deployment);
+ if (!((String) deployment.getDeploymentID()).endsWith(".Comp")
+ && !deployment.isHidden()) {
+ logger.info("createApplication.createdEjb", deployment.getDeploymentID(), deployment.getEjbName(), container.getContainerID());
+ }
+ if (logger.isDebugEnabled()) {
+ for (final Map.Entry<Object, Object> entry : deployment.getProperties().entrySet()) {
+ logger.info("createApplication.createdEjb.property", deployment.getEjbName(), entry.getKey(), entry.getValue());
+ }
+ }
+ toStart.add(deployment);
+ }
+ } catch (Throwable t) {
+ throw new OpenEJBException("Error deploying '" + deployment.getEjbName() + "'. Exception: " + t.getClass() + ": " + t.getMessage(), t);
+ }
+ }
+
+ // start
+ for (final BeanContext deployment : toStart) {
+ try {
+ final Container container = deployment.getContainer();
+ container.start(deployment);
+ if (!((String) deployment.getDeploymentID()).endsWith(".Comp")
+ && !deployment.isHidden()) {
+ logger.info("createApplication.startedEjb", deployment.getDeploymentID(), deployment.getEjbName(), container.getContainerID());
+ }
+ } catch (Throwable t) {
+ throw new OpenEJBException("Error starting '" + deployment.getEjbName() + "'. Exception: " + t.getClass() + ": " + t.getMessage(), t);
+ }
+ }
+ }
+ }
+
@SuppressWarnings("unchecked")
private static void deployMBean(final BeanManager bm, final ClassLoader cl, final String mbeanClass, final Properties appMbeans, final String id) {
final Class<?> clazz;
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java Tue Dec 18 21:23:33 2012
@@ -25,7 +25,6 @@ import org.apache.openejb.OpenEJBExcepti
import org.apache.openejb.util.Messages;
import javax.naming.Context;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -45,24 +44,24 @@ public class EjbJarBuilder {
this.context = context;
}
- public HashMap<String, BeanContext> build(EjbJarInfo ejbJar, Collection<Injection> appInjections) throws OpenEJBException {
- InjectionBuilder injectionBuilder = new InjectionBuilder(context.getClassLoader());
+ public HashMap<String, BeanContext> build(final EjbJarInfo ejbJar, final Collection<Injection> appInjections, final ClassLoader classLoader) throws OpenEJBException {
+ InjectionBuilder injectionBuilder = new InjectionBuilder(classLoader);
List<Injection> moduleInjections = injectionBuilder.buildInjections(ejbJar.moduleJndiEnc);
moduleInjections.addAll(appInjections);
- Context moduleJndiContext = new JndiEncBuilder(ejbJar.moduleJndiEnc, moduleInjections, null, ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context.getClassLoader())
+ Context moduleJndiContext = new JndiEncBuilder(ejbJar.moduleJndiEnc, moduleInjections, null, ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, classLoader)
.build(JndiEncBuilder.JndiScope.module);
HashMap<String, BeanContext> deployments = new HashMap<String, BeanContext>();
- ModuleContext moduleContext = new ModuleContext(ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context, moduleJndiContext);
+ ModuleContext moduleContext = new ModuleContext(ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context, moduleJndiContext, classLoader);
moduleContext.getProperties().putAll(ejbJar.properties);
- InterceptorBindingBuilder interceptorBindingBuilder = new InterceptorBindingBuilder(context.getClassLoader(), ejbJar);
+ InterceptorBindingBuilder interceptorBindingBuilder = new InterceptorBindingBuilder(classLoader, ejbJar);
MethodScheduleBuilder methodScheduleBuilder = new MethodScheduleBuilder();
for (EnterpriseBeanInfo ejbInfo : ejbJar.enterpriseBeans) {
try {
- EnterpriseBeanBuilder deploymentBuilder = new EnterpriseBeanBuilder(ejbInfo, new ArrayList<String>(), moduleContext, moduleInjections);
+ EnterpriseBeanBuilder deploymentBuilder = new EnterpriseBeanBuilder(ejbInfo, moduleContext, moduleInjections);
BeanContext bean = deploymentBuilder.build();
interceptorBindingBuilder.build(bean, ejbInfo);
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Tue Dec 18 21:23:33 2012
@@ -47,16 +47,14 @@ import java.util.concurrent.TimeUnit;
class EnterpriseBeanBuilder {
protected static final Messages messages = new Messages("org.apache.openejb.util.resources");
private final EnterpriseBeanInfo bean;
- private final List<String> defaultInterceptors;
private final BeanType ejbType;
private final List<Exception> warnings = new ArrayList<Exception>();
private final ModuleContext moduleContext;
private final List<Injection> moduleInjections;
- public EnterpriseBeanBuilder(EnterpriseBeanInfo bean, List<String> defaultInterceptors, ModuleContext moduleContext, List<Injection> moduleInjections) {
+ public EnterpriseBeanBuilder(EnterpriseBeanInfo bean, ModuleContext moduleContext, List<Injection> moduleInjections) {
this.moduleContext = moduleContext;
this.bean = bean;
- this.defaultInterceptors = defaultInterceptors;
this.moduleInjections = moduleInjections;
if (bean.type == EnterpriseBeanInfo.STATEFUL) {
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java Tue Dec 18 21:23:33 2012
@@ -56,7 +56,7 @@ public class InheritedAppExceptionTest {
@Test
public void testRollback() throws Exception {
SystemInstance.init(new Properties());
- BeanContext cdi = new BeanContext("foo", null, new ModuleContext("foo",null, "bar", new AppContext("foo", SystemInstance.get(), null, null, null, false), null), Object.class, null, new HashMap<String, String>());
+ BeanContext cdi = new BeanContext("foo", null, new ModuleContext("foo",null, "bar", new AppContext("foo", SystemInstance.get(), null, null, null, false), null, null), Object.class, null, new HashMap<String, String>());
cdi.addApplicationException(AE1.class, true, true);
cdi.addApplicationException(AE3.class, true, false);
cdi.addApplicationException(AE6.class, false, true);
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java Tue Dec 18 21:23:33 2012
@@ -36,7 +36,7 @@ public class AuthorBean implements Entit
public static Object deploymentInfo;
static {
try {
- deploymentInfo = new BeanContext("author", null, new ModuleContext("", null, "", new AppContext("", SystemInstance.get(), Author.class.getClassLoader(), new IvmContext(), new IvmContext(), false), new IvmContext()),
+ deploymentInfo = new BeanContext("author", null, new ModuleContext("", null, "", new AppContext("", SystemInstance.get(), Author.class.getClassLoader(), new IvmContext(), new IvmContext(), false), new IvmContext(), null),
AuthorBean.class,
null,
null,
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java?rev=1423669&r1=1423668&r2=1423669&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java Tue Dec 18 21:23:33 2012
@@ -36,7 +36,7 @@ public class BookBean implements EntityB
public static Object deploymentInfo;
static {
try {
- deploymentInfo = new BeanContext("book", null, new ModuleContext("", null, "", new AppContext("", SystemInstance.get(), Book.class.getClassLoader(), new IvmContext(), new IvmContext(), false), new IvmContext()),
+ deploymentInfo = new BeanContext("book", null, new ModuleContext("", null, "", new AppContext("", SystemInstance.get(), Book.class.getClassLoader(), new IvmContext(), new IvmContext(), false), new IvmContext(), null),
BookBean.class,
null,
null,
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=1423669&r1=1423668&r2=1423669&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 Tue Dec 18 21:23:33 2012
@@ -500,8 +500,6 @@ public class TomcatWebAppBuilder impleme
if (classLoader != null) {
standardContext.setParentClassLoader(classLoader);
standardContext.setDelegate(true);
- //standardContext.setLoader(new TomEEWebappLoader(appInfo.path, classLoader));
- //standardContext.getLoader().setDelegate(true);
}
String host = webApp.host;
@@ -1043,7 +1041,7 @@ public class TomcatWebAppBuilder impleme
for (final ClassListInfo info : webAppInfo.jsfAnnotatedClasses) {
scannedJsfClasses.put(info.name, info.list);
}
- jsfClasses.put(standardContext.getLoader().getClassLoader(), scannedJsfClasses);
+ jsfClasses.put(classLoader, scannedJsfClasses);
try {
@@ -1080,7 +1078,7 @@ public class TomcatWebAppBuilder impleme
final ReloadableEntityManagerFactory remf =
(ReloadableEntityManagerFactory) SystemInstance.get().getComponent(ContainerSystem.class)
.getJNDIContext().lookup(Assembler.PERSISTENCE_UNIT_NAMING_CONTEXT + unitInfo.id);
- remf.overrideClassLoader(standardContext.getLoader().getClassLoader());
+ remf.overrideClassLoader(classLoader);
remf.createDelegate();
} catch (NameNotFoundException nnfe) {
logger.warning("Can't find " + unitInfo.id + " persistence unit");
@@ -1100,7 +1098,11 @@ public class TomcatWebAppBuilder impleme
cs.addWebContext(webContext);
if (!contextInfo.appInfo.webAppAlone) {
+ final List<BeanContext> beanContexts = new ArrayList<BeanContext>();
+ assembler.initEjbs(classLoader, contextInfo.appInfo, appContext, injections, beanContexts, webAppInfo.moduleId );
+ appContext.getBeanContexts().addAll(beanContexts);
new CdiBuilder().build(contextInfo.appInfo, appContext, appContext.getBeanContexts(), webContext);
+ assembler.startEjbs(true, beanContexts);
}
standardContext.setInstanceManager(new JavaeeInstanceManager(webContext, standardContext));