[ 
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.

Reply via email to