Digester problem...ClassNotFoundException
desenho Apr 3, 2008 5:40 PMHi all,
I have a problem using the class com.sun.org.apache.commons.digester.Digester:
public class HibernateConfig {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}And this method in another class
public Configuration digest() throws MappingException, ClassNotFoundException, IOException, SAXException {
Digester digester = new Digester();
digester.push(this);
digester.addObjectCreate("classes/class", br.com.ze.configuration.HibernateConfig.class);
digester.addBeanPropertySetter("classes/class/name");
digester.addSetNext("classes/class", "addClass");
HibernateConfigurationApplier hconf = null;
if(xmlClassesConfigFile != null)
hconf = (HibernateConfigurationApplier) digester.parse(xmlClassesConfigFile);
else
hconf = (HibernateConfigurationApplier) digester.parse(xmlClassesConfigInputStream);
Configuration configuration = new Configuration();
for(HibernateConfig clazz: hconf.classes)
configuration.addClass( Class.forName(clazz.getName()) );
return configuration.configure();
}
And the following XML file:
<?xml version="1.0" encoding="UTF-8"?> <classes> <class> <name>br.com.ze.common.model.Banco</name> </class> <class> <name>br.com.ze.common.model.Contrato</name> </class> <class> <name>br.com.ze.common.model.Produto</name> </class> <class> <name>br.com.ze.common.model.Segmento</name> </class> </classes>
When I execute the following:
public static void main(String[] args) throws MappingException, FileNotFoundException, ClassNotFoundException, IOException, SAXException {
Configuration conf = new HibernateConfigurationApplier("WebContent/WEB-INF/persistent-classes.xml").digest();
}
It runs just fine, but when I execute the same line in a javax.servlet.Filter I´ve done:
public void init(FilterConfig filterConfig) throws ServletException {
Configuration config;
try {
config = new HibernateConfigurationApplier(filterConfig.getServletContext().getResourceAsStream("WEB-INF/persistent-classes.xml")).digest();
} catch (Exception e) {
throw new ServletException(e);
}
}
I get this exception:
java.lang.ClassNotFoundException: No ClassLoaders found for: br.com.ze.configuration.HibernateConfig
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:252)
at com.sun.org.apache.commons.digester.Rule.begin(Rule.java:200)
at com.sun.org.apache.commons.digester.Digester.startElement(Digester.java:1273)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
.
.
.
The exception is thrown at digester.parse()
I´m using Eclipse Europa, JAVA 6 and JBOSS 4.2.2
Any help??!?!?!
Thanks in advance.