Anonymous - 2011-03-24

Hi,

I have some difficulty with the dozer class loader running in in EAR app in Apache Geronimo 2.2.1. I modified the classloader to println() the class name it was trying to load when it gets a CNF.

Strangely org.dozer.util.DefaultClassloader is trying to load an instance of org.dozer.util.DefaultClassloader and fails. For some reason this class tries to load itself and fails with a CNF. Underneath it uses the Apache commons lang class loader. Initially I thought it may be a problem with that so I upgraded to commons lang to 2.6 (the latest… I was running on 2.3). Anyway I think it is something else. It was also having problems finding my dozer.properties and xml config etc. when it is clearly in the classpath of the EAR app. Also I can run it from a main() with my XML config and it is fine. We have a huge structure to parse and I did most of the mapping work already so I really want this functional.

I even went as far as stuffing the dozer.properies file and my dozerBeanMapping.xml into a copy of dozer-5.3.2.jar and deploying it as a Geronimo dependency like so:

            <dep:dependency>
                <dep:groupId>dozer</dep:groupId>
                <dep:artifactId>dozer</dep:artifactId>
                <dep:version>5.3.2</dep:version>
                <dep:type>jar</dep:type>
            </dep:dependency>

This way it definitely finds the properties file and the XML config but still CNF's like this:

org.dozer.util.DefaultClassLoader loading:org.dozer.util.DefaultClassLoader…
2011-03-25 00:00:08,959 ERROR  DefaultInboundRouter - An error occured when notifying the application:null
2011-03-25 00:00:08,959 ERROR  An error occured when notifying the application:null
org.dozer.MappingException: java.lang.ClassNotFoundException: org.dozer.util.DefaultClassLoader in classloader console.jms/pwsatkBus/1.0/car
at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:82)
at org.dozer.util.DefaultClassLoader.loadClass(DefaultClassLoader.java:39)
at org.dozer.DozerInitializer.loadBeanType(DozerInitializer.java:115)
at org.dozer.DozerInitializer.initialize(DozerInitializer.java:97)
at org.dozer.DozerInitializer.init(DozerInitializer.java:74)
at org.dozer.DozerBeanMapper.init(DozerBeanMapper.java:164)
at org.dozer.DozerBeanMapper.<init>(DozerBeanMapper.java:90)
at org.dozer.DozerBeanMapperSingletonWrapper.getInstance(DozerBeanMapperSingletonWrapper.java:43)
at com.gdn.integration.notifiers.VeniceNotifier.<init>(VeniceNotifier.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.pws.integration.pathway.utils.Factory.get(Factory.java:37)
at com.pws.integration.pathway.routers.DefaultInboundRouter.notifyCallback(DefaultInboundRouter.java:328)
at com.pws.integration.pathway.transports.AbstractInboundTransport.notifyCallbacks(AbstractInboundTransport.java:63)
at com.pws.integration.pathway.transports.InboundTransportJmsTopic$TextListener.onMessage(InboundTransportJmsTopic.java:113)
at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1229)
at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:134)
at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:205)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.dozer.util.DefaultClassLoader in classloader console.jms/MyApp/1.0/car
at org.apache.geronimo.kernel.config.MultiParentClassLoader.loadOptimizedClass(MultiParentClassLoader.java:407)
at org.apache.geronimo.kernel.config.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:257)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:545)
at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:593)
at org.apache.commons.lang.ClassUtils.getClass(ClassUtils.java:576)
at org.dozer.util.DefaultClassLoader.loadClass(DefaultClassLoader.java:37)
… 25 more

Anyone have some experience to offer with this?