Helllo Willem,

Really interesting URL about the OSGi improvements in Camel. Will these
things be part of Camel 2.4? When? In what state is the new OSGi support?
Guillaume mentions that he is creating services that one can depend on
(which is what I have discussed with hime on another thread). If this works
now, then I can probably drop my OSGi extender that I use for that purpose.
It would be interesting to know the new pattern/best practice for using
Camel in OSGi.

Anyway, I tried adding the import you mentioned. I'm not sure I understood
you correctly. I first tried adding it as a dynamic import. This didn't work
since neither the dash nor forward slash characters are accepted by the
maven-bundle-plugin in a DynamicImport-Package instruction. I then
added META-INF/services/org/apache/camel/component/ in an Import-Package.
The maven-bundle-plugin accepted this. However my bundle then no longer
resolves since that import is not found in runtime. I then marked it as
optional. My bundle then resolves but when the camel context is started I
get the same exception as before.

When I look at camel-core and camel-ftp they don't seem to export
the META-INF/services/org/apache/camel/component/ package. How then could I
hope to being able to import it?

I'm probably missing something here. The error message indicates that Camel
is looking for "strategy.factory.file"
in META-INF/services/org/apache/camel/component/. I'm not sure what that
means. I can see that in camel-core there is a file called "file" in
the META-INF/services/org/apache/camel/component/ folder. That file contains
a property called "strategy.factory.class". I assume the value of that
property is what we are looking for. Still can't figure out how my bundle
can access the directory if it's not exported.

/Bengt


2010/6/13 Willem Jiang <willem.ji...@gmail.com>

> Hi Bengt,
>
> You need also add the package import of
> "META-INF/services/org/apache/camel/component/"
>
> As the OsgiFactoryFinder is changed to use camel application bundle to load
> the resource, you need to make sure your application bundle has the right to
> access the file.
>
> BTW, there are some discusses about the refactoring that you can take a
> look[1]
>
> [1]
> http://old.nabble.com/-DISCUSS--OSGi-improvements-and-type-converters-ts28776216.html#a28776216
>
> Willem
>
> Bengt Rodehav wrote:
>
>> Willem,
>>
>> There might still be some OSGi related problems. When testing different
>> failing scenarios I got the following exception:
>>
>> 21:44:59,398 | DEBUG | guration Updater | FileEndpoint
>> |
>> mponent.file.GenericFileEndpoint  138 | No strategy factory defined in
>> 'META-INF/services/org/apache/camel/component/'
>> org.apache.camel.NoFactoryAvailableException: Could not find factory class
>> for resource: strategy.factory.file
>> at
>>
>> org.apache.camel.core.osgi.OsgiFactoryFinder.findClass(OsgiFactoryFinder.java:71)
>> at
>>
>> org.apache.camel.component.file.GenericFileEndpoint.createGenericFileStrategy(GenericFileEndpoint.java:134)
>> at
>>
>> org.apache.camel.component.file.GenericFileEndpoint.getGenericFileProcessStrategy(GenericFileEndpoint.java:118)
>> at
>>
>> org.apache.camel.component.file.GenericFileConsumer.doStart(GenericFileConsumer.java:397)
>> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:56)
>> at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:53)
>> at
>>
>> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1015)
>>
>> Seems like Camel cannot find any factory class for
>> "strategy.factory.file".
>> Sounds fishy to me and seems related to the class loading issues I had
>> before. Can you check that the OSGi refactoring that has been made in
>> Camel
>> 2.4 takes this into account? I'll try to reproduce the error.
>>
>> /Bengt
>>
>>

Reply via email to