Affects Version/s: None
Fix Version/s: None
JBoss application server version 4.0.4GA. Probably affects most versions of JBoss
When using betwixt in a JBoss application, "Class not found" exceptions get thrown when Class.forName methods are called in classes org.apache.commons.betwixt.digester.ElementRule and org.apache.commons.betwixt.digester.ClassRule. Specifically the Class.forName method uses the system class loader to load classes and in JBoss the classpath normally does not contain the application jar files. The fix is very simple. The Class.forName method calls in both the classes were replaced with the following code lines in ElementRule and similar changes were made in ClassRule as well. This fix ensures that the appropriate class loader is used for loading classes and is similar to the fix made in log4j.
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null)
Class clazz = loader.loadClass(implementationClass);