Author: dblevins
Date: Wed Apr 20 14:50:17 2011
New Revision: 1095427
URL: http://svn.apache.org/viewvc?rev=1095427&view=rev
Log:
Do not add non-valid classes as managed beans
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1095427&r1=1095426&r2=1095427&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
Wed Apr 20 14:50:17 2011
@@ -16,6 +16,7 @@
*/
package org.apache.openejb;
+import bsh.Modifiers;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.config.AppModule;
@@ -54,6 +55,7 @@ import javax.naming.Name;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import java.io.File;
+import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -217,6 +219,8 @@ public class OpenEjbContainer extends EJ
for (String caller : callers) {
+ if (!isValid(caller)) continue;
+
final ManagedBean bean = ejbJar.addEnterpriseBean(new
ManagedBean(caller, caller));
// set it to bean so it can get UserTransaction injection
@@ -282,6 +286,22 @@ public class OpenEjbContainer extends EJ
}
}
+ private boolean isValid(String caller) {
+ try {
+ final ClassLoader loader =
Thread.currentThread().getContextClassLoader();
+
+ final Class<?> clazz = loader.loadClass(caller);
+
+ if (clazz.isEnum()) return false;
+ if (clazz.isInterface()) return false;
+ if (Modifier.isAbstract(clazz.getModifiers())) return false;
+
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
private AppModule load(Map<?, ?> map, ConfigurationFactory
configurationFactory) throws MalformedURLException, OpenEJBException {
final List<File> moduleLocations;