[
https://issues.apache.org/jira/browse/CAMEL-8689?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14530560#comment-14530560
]
Thomas Diesler edited comment on CAMEL-8689 at 5/6/15 1:43 PM:
---------------------------------------------------------------
With this I get
{code}
15:26:16,518 SEVERE [org.jboss.arquillian.protocol.jmx.JMXTestRunner]
(pool-2-thread-1) Failed:
org.wildfly.camel.test.csv.CSVIntegrationTest.testMarshal:
org.dozer.MappingException: java.lang.InstantiationException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader
at
org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:82)
[dozer-5.5.1.jar:]
at org.dozer.util.ReflectionUtils.newInstance(ReflectionUtils.java:366)
[dozer-5.5.1.jar:]
at
org.dozer.DozerInitializer.registerClassLoader(DozerInitializer.java:118)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.initialize(DozerInitializer.java:98)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.init(DozerInitializer.java:79)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.init(DozerInitializer.java:64)
[dozer-5.5.1.jar:]
at org.dozer.DozerBeanMapper.init(DozerBeanMapper.java:173)
[dozer-5.5.1.jar:]
at org.dozer.DozerBeanMapper.<init>(DozerBeanMapper.java:99)
[dozer-5.5.1.jar:]
at
org.apache.camel.converter.dozer.DozerTypeConverterLoader.createDozerBeanMapper(DozerTypeConverterLoader.java:232)
[camel-dozer-2.16-SNAPSHOT.jar:2.16-SNAPSHOT]
at
org.apache.camel.converter.dozer.DozerTypeConverterLoader.<init>(DozerTypeConverterLoader.java:118)
[camel-dozer-2.16-SNAPSHOT.jar:2.16-SNAPSHOT]
at
org.wildfly.camel.test.csv.CSVIntegrationTest.testMarshal(CSVIntegrationTest.java:68)
[csv-dataformat-tests:]
...
Caused by: java.lang.InstantiationException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader
at java.lang.Class.newInstance(Class.java:423) [rt.jar:1.8.0_31]
at org.dozer.util.ReflectionUtils.newInstance(ReflectionUtils.java:364)
[dozer-5.5.1.jar:]
... 150 more
Caused by: java.lang.NoSuchMethodException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader.<init>()
at java.lang.Class.getConstructor0(Class.java:3074) [rt.jar:1.8.0_31]
at java.lang.Class.newInstance(Class.java:408) [rt.jar:1.8.0_31]
... 151 more
{code}
The {{org.dozer.DozerInitializer}} does
{code}
private void registerClassLoader(GlobalSettings globalSettings, ClassLoader
classLoader, BeanContainer beanContainer) {
String classLoaderName = globalSettings.getClassLoaderName();
if (!DozerConstants.DEFAULT_CLASS_LOADER_BEAN.equals(classLoaderName)) {
DefaultClassLoader defaultClassLoader = new
DefaultClassLoader(classLoader);
Class<? extends DozerClassLoader> classLoaderType =
loadBeanType(classLoaderName, defaultClassLoader, DozerClassLoader.class);
DozerClassLoader classLoaderBean =
ReflectionUtils.newInstance(classLoaderType);
beanContainer.setClassLoader(classLoaderBean);
}
}
{code}
was (Author: tdiesler):
I get
{code}
15:26:16,518 SEVERE [org.jboss.arquillian.protocol.jmx.JMXTestRunner]
(pool-2-thread-1) Failed:
org.wildfly.camel.test.csv.CSVIntegrationTest.testMarshal:
org.dozer.MappingException: java.lang.InstantiationException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader
at
org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:82)
[dozer-5.5.1.jar:]
at org.dozer.util.ReflectionUtils.newInstance(ReflectionUtils.java:366)
[dozer-5.5.1.jar:]
at
org.dozer.DozerInitializer.registerClassLoader(DozerInitializer.java:118)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.initialize(DozerInitializer.java:98)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.init(DozerInitializer.java:79)
[dozer-5.5.1.jar:]
at org.dozer.DozerInitializer.init(DozerInitializer.java:64)
[dozer-5.5.1.jar:]
at org.dozer.DozerBeanMapper.init(DozerBeanMapper.java:173)
[dozer-5.5.1.jar:]
at org.dozer.DozerBeanMapper.<init>(DozerBeanMapper.java:99)
[dozer-5.5.1.jar:]
at
org.apache.camel.converter.dozer.DozerTypeConverterLoader.createDozerBeanMapper(DozerTypeConverterLoader.java:232)
[camel-dozer-2.16-SNAPSHOT.jar:2.16-SNAPSHOT]
at
org.apache.camel.converter.dozer.DozerTypeConverterLoader.<init>(DozerTypeConverterLoader.java:118)
[camel-dozer-2.16-SNAPSHOT.jar:2.16-SNAPSHOT]
at
org.wildfly.camel.test.csv.CSVIntegrationTest.testMarshal(CSVIntegrationTest.java:68)
[csv-dataformat-tests:]
...
Caused by: java.lang.InstantiationException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader
at java.lang.Class.newInstance(Class.java:423) [rt.jar:1.8.0_31]
at org.dozer.util.ReflectionUtils.newInstance(ReflectionUtils.java:364)
[dozer-5.5.1.jar:]
... 150 more
Caused by: java.lang.NoSuchMethodException:
org.apache.camel.converter.dozer.DozerThreadContextClassLoader.<init>()
at java.lang.Class.getConstructor0(Class.java:3074) [rt.jar:1.8.0_31]
at java.lang.Class.newInstance(Class.java:408) [rt.jar:1.8.0_31]
... 151 more
{code}
with this
> camel-dozer: Multiple contexts / bundles - Does not use the correct
> classloader
> -------------------------------------------------------------------------------
>
> Key: CAMEL-8689
> URL: https://issues.apache.org/jira/browse/CAMEL-8689
> Project: Camel
> Issue Type: Bug
> Components: camel-dozer
> Affects Versions: 2.15.1
> Reporter: Raúl Kripalani
> Assignee: Raúl Kripalani
> Fix For: 2.14.3, 2.16.0, 2.15.3
>
>
> Dozer is a tough library to work with in a multi-module context, because of
> its use of singletons for configuration. In an OSGi environment, each bundle
> will have its own classloader but Dozer's architecture makes it impossible to
> cater for this scenario nicely. Unfortunately, it expects a single
> container-wide classloader configured in the BeanContainer singleton.
> In Camel we worked around this by providing a custom DozerClassLoader
> implementation that is aware of the Camel Context, but what happens if we are
> sharing Dozer across multiple Camel Contexts? The most recently initialized
> context will override the container-wide classloader.
> We need a solution such that the classloader can dynamically change based on
> the Camel Context that is using the component.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)