Hi, yes, I'm using the most recent version from the trunk. I also assembled two simple test packages:
http://openejb.979440.n4.nabble.com/file/n4657131/war_test.war war_test.war contains a single bean annotated with @Named, and an index.xhtml using this bean; if the CDI scan was successful, the message "OK, CDI scan was successful" appears at /war_test. http://openejb.979440.n4.nabble.com/file/n4657131/ear_test.ear ear_test.ear just wraps this this WAR in an app module (web context /ear_test) Now, the war_test works in TomEE 1.1.0, but the ear_test fails. I did some debugging, and the most obvious difference to me is at the end of CDIScanner.init(): // here for ears we need to skip classes in the parent classloader final ClassLoader scl = ClassLoader.getSystemClassLoader(); final boolean filterByClassLoader = "true".equals(SystemInstance.get().getProperty(OPENEJB_CDI_FILTER_CLASSLOADER, "true")); for (String className : beans.managedClasses) { if (ejbClasses.contains(className)) continue; final Class clazz = load(className, classLoader); if (clazz == null) { <== **TRUE FOR EAR_TEST** continue; } final ClassLoader cl = clazz.getClassLoader(); // 1. this classloader is the good one // 2. the classloader is the appclassloader one and we are in the ear parent if (!filterByClassLoader || comparator.isSame(cl) || (cl.equals(scl) && startupObject.getWebContext() == null)) { classes.add(clazz); } } In both cases, the bean is listed in beans.managedClasses. But for the EAR, the bean cannot be loaded by the provided ClassLoader, and hence is never added to classes. -- Johannes -- View this message in context: http://openejb.979440.n4.nabble.com/Deployment-of-CDI-beans-does-not-work-for-WARs-wrapped-in-an-EAR-tp4657110p4657131.html Sent from the OpenEJB Dev mailing list archive at Nabble.com.
