[
https://issues.apache.org/activemq/browse/CAMEL-577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43797#action_43797
]
Wojciech Durczynski commented on CAMEL-577:
-------------------------------------------
In my apllication's bundle (the one with camel-context) I created dependency to
org.apache.camel.converter package, and not to other two (stax and jaxp,
because I don't use them). With this configuration I get some errors in log,
such as:
12:43:42,484 DEBUG [EMAIL PROTECTED] org.apache.camel.util.ResolverUtil
- Searching for annotations of org.apache.camel.Converter in packages:
[org.apache.camel.converter]
12:43:42,484 DEBUG [EMAIL PROTECTED] org.apache.camel.util.ResolverUtil
- Loading from osgi buindle using classloader: BundleDelegatingClassLoader for
[Dialog orders (com.comarch.p7samples.dialorder)]
12:43:42,578 DEBUG [EMAIL PROTECTED] org.apache.camel.util.ResolverUtil
- Could not find class 'org/apache/camel/converter/jaxp/StaxConverter.class' in
classloader: BundleDelegatingClassLoader for [Dialog orders
(com.comarch.p7samples.dialorder)]. Reason: java.lang.ClassNotFoundException:
org.apache.camel.converter.jaxp.StaxConverter not found from bundle
[com.comarch.p7samples.dialorder]
java.lang.ClassNotFoundException: org.apache.camel.converter.jaxp.StaxConverter
not found from bundle [com.comarch.p7samples.dialorder]
at
org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:103)
at
org.springframework.osgi.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:156)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
org.apache.camel.util.ResolverUtil.addIfMatching(ResolverUtil.java:477)
at
org.apache.camel.util.ResolverUtil.loadImplementationsInBundle(ResolverUtil.java:357)
at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:293)
at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:277)
at
org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:253)
at
org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:57)
at
org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218)
at
org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64)
at
org.apache.camel.util.CamelContextHelper.convertTo(CamelContextHelper.java:85)
at
org.apache.camel.component.bean.RegistryBean.getProcessor(RegistryBean.java:77)
at
org.apache.camel.component.bean.BeanProcessor.getProcessor(BeanProcessor.java:135)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:76)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:146)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:90)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:59)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:146)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:90)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39)
at
com.comarch.p7.objectrepository.camel.ObjRepConsumer.poll(ObjRepConsumer.java:35)
at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:65)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException:
org.apache.camel.converter.jaxp.StaxConverter
at java.lang.ClassLoader.findClass(ClassLoader.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:429)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:289)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1269)
at
org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:99)
... 39 more
12:43:42,593 DEBUG [EMAIL PROTECTED] org.apache.camel.util.ResolverUtil
- Could not find class 'org/apache/camel/converter/jaxp/DomConverter.class' in
classloader: BundleDelegatingClassLoader for [Dialog orders
(com.comarch.p7samples.dialorder)]. Reason: java.lang.ClassNotFoundException:
org.apache.camel.converter.jaxp.DomConverter not found from bundle
[com.comarch.p7samples.dialorder]
These logs have DEBUG state, but also I receive one ERROR state log:
12:43:42,812 ERROR [EMAIL PROTECTED] org.apache.camel.util.ResolverUtil
- Could not search jar file '\org\apache\camel\converter' for classes matching
criteria: annotated with @Converter due to an IOException:
\org\apache\camel\converter (System nie może odnaleźć określonej ścieżki)
java.io.FileNotFoundException: \org\apache\camel\converter (System nie może
odnaleźć określonej ścieżki)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at
org.apache.camel.util.ResolverUtil.loadImplementationsInJar(ResolverUtil.java:439)
at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:343)
at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:277)
at
org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:253)
at
org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:57)
at
org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218)
at
org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64)
at
org.apache.camel.util.CamelContextHelper.convertTo(CamelContextHelper.java:85)
at
org.apache.camel.component.bean.RegistryBean.getProcessor(RegistryBean.java:77)
at
org.apache.camel.component.bean.BeanProcessor.getProcessor(BeanProcessor.java:135)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:76)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:146)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:90)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:59)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:146)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:90)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39)
at
com.comarch.p7.objectrepository.camel.ObjRepConsumer.poll(ObjRepConsumer.java:35)
at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:65)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Except of these logs everything is working fine.
> ResolverUtil can't resolve class under osgi enviroment
> ------------------------------------------------------
>
> Key: CAMEL-577
> URL: https://issues.apache.org/activemq/browse/CAMEL-577
> Project: Apache Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: 1.3.0
> Reporter: Freeman Fang
> Fix For: 1.4.0
>
> Attachments: CAMEL-577.patch
>
>
> in method of
> protected void find(Test test, String packageName, ClassLoader loader)
> it try to load class from directory or jar, it works for standalone mode.
> But if the classloader of the method is osgi bundle class loader, it will
> fail since the getResource(packgename) return neither directory nor jar
> for example, package name is org/apache/camel/convert, then what returned is
> /org/apache/camel/convert, so both loadImplementationsInDirectory and
> loadImplementationsInJar doesn't work in this case
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.