Author: rmannibucau
Date: Wed May 9 21:55:51 2012
New Revision: 1336419
URL: http://svn.apache.org/viewvc?rev=1336419&view=rev
Log:
skipping ejb in a webapp of an ear for cdi is a bad idea
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1336419&r1=1336418&r2=1336419&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
Wed May 9 21:55:51 2012
@@ -142,13 +142,14 @@ public class CdiScanner implements Scann
}
}
+ final ClassLoader scl = ClassLoader.getSystemClassLoader();
for (String className : beans.managedClasses) {
if (ejbClasses.contains(className)) continue;
final Class clazz = load(className, classLoader);
final ClassLoader clazzClassloader = clazz.getClassLoader();
if (clazz != null
&& (classLoader.equals(clazzClassloader) // normal case
- ||
clazzClassloader.equals(CdiScanner.class.getClassLoader()))) { // can happen in
standalone
+ || clazzClassloader.equals(scl))) { // can
happen in standalone
classes.add(clazz);
}
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1336419&r1=1336418&r2=1336419&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
Wed May 9 21:55:51 2012
@@ -226,55 +226,53 @@ public class OpenEJBLifecycle implements
//Discover classpath classes
deployManagedBeans(scannerService.getBeanClasses(),
stuff.getBeanContexts());
- if (stuff.getWebContext() == null) { // otherwise we are in an ear
and we already fired ejbs
- for (BeanContext beanContext : stuff.getBeanContexts()) {
- if (!beanContext.getComponentType().isCdiCompatible())
continue;
-
- final Class implClass = beanContext.getManagedClass();
-
- //Define annotation type
- AnnotatedType<?> annotatedType =
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
-
- //Fires ProcessAnnotatedType
- ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
-
- // TODO Can you really veto an EJB?
- //if veto() is called
- if (processAnnotatedEvent.isVeto()) {
- continue;
- }
+ for (BeanContext beanContext : stuff.getBeanContexts()) {
+ if (!beanContext.getComponentType().isCdiCompatible())
continue;
- CdiEjbBean<Object> bean = new
CdiEjbBean<Object>(beanContext, webBeansContext);
+ final Class implClass = beanContext.getManagedClass();
- beanContext.set(CdiEjbBean.class, bean);
- beanContext.set(CurrentCreationalContext.class, new
CurrentCreationalContext());
- beanContext.addSystemInterceptor(new CdiInterceptor(bean,
beanManager, cdiPlugin.getContexsServices()));
+ //Define annotation type
+ AnnotatedType<?> annotatedType =
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
- EjbUtility.fireEvents((Class<Object>) implClass, bean,
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+ //Fires ProcessAnnotatedType
+ ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
-
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
+ // TODO Can you really veto an EJB?
+ //if veto() is called
+ if (processAnnotatedEvent.isVeto()) {
+ continue;
+ }
- Class clazz = beanContext.getBeanClass();
- while (clazz.isAnnotationPresent(Specializes.class)) {
- clazz = clazz.getSuperclass();
+ CdiEjbBean<Object> bean = new CdiEjbBean<Object>(beanContext,
webBeansContext);
- if (clazz == null || Object.class.equals(clazz)) break;
+ beanContext.set(CdiEjbBean.class, bean);
+ beanContext.set(CurrentCreationalContext.class, new
CurrentCreationalContext());
+ beanContext.addSystemInterceptor(new CdiInterceptor(bean,
beanManager, cdiPlugin.getContexsServices()));
- final CdiEjbBean<Object> superBean = new
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
+ EjbUtility.fireEvents((Class<Object>) implClass, bean,
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
- EjbBeanCreatorImpl<?> ejbBeanCreator = new
EjbBeanCreatorImpl(superBean);
+
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
- //Define meta-data
- ejbBeanCreator.defineSerializable();
- ejbBeanCreator.defineStereoTypes();
- ejbBeanCreator.defineScopeType("Session Bean
implementation class : " + clazz.getName() + " stereotypes must declare same
@ScopeType annotations", false);
- ejbBeanCreator.defineQualifier();
-
ejbBeanCreator.defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
+ Class clazz = beanContext.getBeanClass();
+ while (clazz.isAnnotationPresent(Specializes.class)) {
+ clazz = clazz.getSuperclass();
- bean.specialize(superBean);
+ if (clazz == null || Object.class.equals(clazz)) break;
- EjbUtility.defineSpecializedData(clazz, bean);
- }
+ final CdiEjbBean<Object> superBean = new
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
+
+ EjbBeanCreatorImpl<?> ejbBeanCreator = new
EjbBeanCreatorImpl(superBean);
+
+ //Define meta-data
+ ejbBeanCreator.defineSerializable();
+ ejbBeanCreator.defineStereoTypes();
+ ejbBeanCreator.defineScopeType("Session Bean
implementation class : " + clazz.getName() + " stereotypes must declare same
@ScopeType annotations", false);
+ ejbBeanCreator.defineQualifier();
+
ejbBeanCreator.defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
+
+ bean.specialize(superBean);
+
+ EjbUtility.defineSpecializedData(clazz, bean);
}
}