Hi,

during Development it's OK to use Dynamic-Import for testing.
But to make sure it's only during your research I suggest using the
karaf commands to add it to your running bundle like dev:dynamic-import BundleID

this will add the imports and with a package:imports BundleId you'll
actually see the
required packages to import. Just grab those and add them to the Manifest.

regards, Achim

2012/8/6 Ephemeris Lappis <[email protected]>:
> Hello.
>
> I've had many warnings about Dynamic-Import, and I suppose that's for
> good reasons.
>
> I understand how and why the maven plugin doesn't analyze the Camel's
> routes and their components such as Groovy to build the bundle's
> dependencies.
>
> But how can I guess the packages that Groovy will need at runtime in
> Camel/ServiceMix/Karaf, and give a hand-made Import-Package for my
> bundle ? As I've explained before, I've done a test copying the packages
> that were detected at deployment time using a plain XML blueprint, but
> some packages are only imported when needed, and errors occur late...
>
> Any idea ? Have you experienced dependency management problem for other
> components ?
>
> Thanks again.
>
> Ephemeris Lappis
>
> Le 06/08/2012 07:07, Freeman-2 [via ServiceMix] a écrit :
>> Hi,
>>
>> When you drop a blueprint camel router file in $SMX_HOME/deploy
>> folder, actually a karaf blueprint deployer will kick in and transform
>> the blueprint file into a bundle underlying, and as Johan already
>> pointed out, karat blueprint deployer will add "Dynamic-Import: *" for
>> the bundle generated from blueprint file, it works but using
>> Dynamic-Import isn't good practice in OSGi world.
>>
>> When use maven-bundle-plugin to build camel router bundle yourself, it
>> will scan the blueprint configuration file, but only those packages
>> used explicitly in bean declaration would be taken  into account(added
>> into Import-Package), the tags like <groovy> won't, as
>> maven-bundle-plugin can't connect tag with the necessary underlying
>> camel packages, you need manage it yourself in maven-bundle-plugin
>> configuration.
>>
>> Freeman
>> -------------
>> Freeman Fang
>>
>> FuseSource
>> Email:[hidden email] </user/SendEmail.jtp?type=node&node=5714083&i=0>
>> Web: fusesource.com
>> Twitter: freemanfang
>> Blog: http://freemanfang.blogspot.com
>> http://blog.sina.com.cn/u/1473905042
>> weibo: http://weibo.com/u/1473905042
>>
>> On 2012-7-31, at 上午2:32, Ephemeris Lappis wrote:
>>
>> > Hello.
>> >
>> > I don't understand what you mean : should I explicitly put the
>> > "Dynamic-Import: *" in my bundle instructions ?
>> > Thanks.
>> >
>> > Ephemeris Lappis
>> >
>> > Le 30/07/2012 18:42, Johan Edstrom-2 [via ServiceMix] a écrit :
>> >> A blueprint file deployed is going to be setup with a
>> >> Dynamic-Import: *
>> >>
>> >> Which is pretty expensive for the framework, a bundle with blueprint
>> >> on your
>> >> classpath is going to need the correct imports and exports.
>> >>
>> >> /je
>> >> On Jul 30, 2012, at 10:35 AM, Jon Anstey wrote:
>> >>
>> >>> The maven-bundle-plugin won't detect what Camel components you are
>> >> using
>> >>> and make sure those are installed. To do this you will need to use a
>> >>> feature for your application
>> >>>
>> >>
>> http://karaf.apache.org/manual/latest-2.2.x/users-guide/provisioning.htmlYou
>> >>> can create one something like this:
>> >>>
>> >>>   <feature name="myapp" version="${project.version}">
>> >>>       <feature>camel-core</feature>
>> >>> <feature>camel-blueprint</feature>
>> >>>       <feature>camel-activemq</feature>
>> >>>       ...
>> >>> <bundle>mvn:myapp/myapp/${project.version}</bundle>
>> >>>   </feature>
>> >>>
>> >>> Now, when you install "myapp" feature, all the Camel components you
>> >> need
>> >>> will be installed as well.
>> >>>
>> >>> If you want to enforce the various package imports are there at the
>> >> OSGi
>> >>> bundle level, you can always add them in manually with the
>> >> <Import-Package>
>> >>> instruction.
>> >>>
>> >>> Cheers,
>> >>> Jon
>> >>>
>> >>> On Fri, Jul 27, 2012 at 1:41 PM, Ephemeris Lappis <
>> >>> [hidden email] </user/SendEmail.jtp?type=node&node=5714023&i=0>>
>> wrote:
>> >>>
>> >>>> Hello.
>> >>>>
>> >>>> It seems that dependencies for a blueprint file depend on the way
>> >> it is
>> >>>> deployed.
>> >>>>
>> >>>> In a first step, I directly copy the blueprint XML file to the
>> deploy
>> >>>> folder, and it works as expected.
>> >>>>
>> >>>> In a second step, I package the same file into a bundle using the
>> >> felix
>> >>>> maven plugin, and deploy the generated JAR into the deploy folder.
>> >> In this
>> >>>> case, an error is produced during the deployment :
>> >>>>
>> >>>> java.lang.NoClassDefFoundError: groovy/lang/Script
>> >>>>
>> >>>> I've not tested other cases, but I suppose that it may do the same
>> >> error
>> >>>> for
>> >>>> other Camel component like it does with groovy in my example.
>> >>>>
>> >>>> When I look at the first bundle description in the web console, I
>> >> can see a
>> >>>> list of all the actual dependent modules in the imported packages :
>> >>>>
>> >>>> groovy.lang,version=1.8.5 from groovy-all (219)
>> >>>> groovyjarjarantlr,version=1.8.5 from groovy-all (219)
>> >>>> org.apache.activemq,version=5.5.1 from
>> >> org.apache.activemq.activemq-core
>> >>>> (50)
>> >>>> org.apache.camel,version=2.8.5 from org.apache.camel.camel-core (91)
>> >>>> org.apache.camel.blueprint,version=2.8.5 from
>> >>>> org.apache.camel.camel-blueprint (152)
>> >>>> org.apache.camel.impl,version=2.8.5 from
>> >> org.apache.camel.camel-core (91)
>> >>>> org.apache.camel.spi,version=2.8.5 from org.apache.camel.camel-core
>> >> (91)
>> >>>> org.codehaus.groovy.reflection,version=1.8.5 from groovy-all (219)
>> >>>> org.codehaus.groovy.runtime.callsite,version=1.8.5 from groovy-all
>> >> (219)
>> >>>> org.osgi.service.blueprint.container,version=1.0.1 from
>> >>>> org.apache.aries.blueprint (10)
>> >>>>
>> >>>> In the second case, the maven plugin only sets the
>> >>>> "org.osgi.service.blueprint" in the imported packages list in the
>> >> manifest.
>> >>>> Indeed, It seems that all the OSGi part of my blueprint is taken
>> into
>> >>>> account, but nothing from the camel context... Nothing seems to be
>> >> done at
>> >>>> deployment time to add the camel components dependences...
>> >>>>
>> >>>> Where is the error ? Should I do something different to build the
>> >> JAR with
>> >>>> the maven plugin ?
>> >>>>
>> >>>> Thanks for you help.
>> >>>>
>> >>>>
>> http://servicemix.396122.n5.nabble.com/file/n5714018/camel-context.xml
>> >>>> camel-context.xml
>> >>>> http://servicemix.396122.n5.nabble.com/file/n5714018/pom.xml pom.xml
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> View this message in context:
>> >>>>
>> >>
>> http://servicemix.396122.n5.nabble.com/Camel-classpath-using-blueprint-inside-an-OSGi-bundle-tp5714018.html
>> >>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Cheers,
>> >>> Jon
>> >>> ---------------
>> >>> FuseSource
>> >>> Email: [hidden email]
>> </user/SendEmail.jtp?type=node&node=5714023&i=1>
>> >>> Web: fusesource.com
>> >>> Twitter: jon_anstey
>> >>> Blog: http://janstey.blogspot.com
>> >>> Author of Camel in Action: http://manning.com/ibsen
>> >>
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------
>> >> If you reply to this email, your message will be added to the
>> >> discussion below:
>> >>
>> http://servicemix.396122.n5.nabble.com/Camel-classpath-using-blueprint-inside-an-OSGi-bundle-tp5714018p5714023.html
>>
>> >>
>> >> To unsubscribe from Camel classpath using blueprint inside an OSGi
>> >> bundle, click here
>> >> <
>> >> NAML
>> >>
>> <http://servicemix.396122.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>> >>
>> >
>> >
>> >
>> >
>> >
>> > --
>> > View this message in context:
>> http://servicemix.396122.n5.nabble.com/Camel-classpath-using-blueprint-inside-an-OSGi-bundle-tp5714018p5714025.html
>> > Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>>
>> ------------------------------------------------------------------------
>> If you reply to this email, your message will be added to the
>> discussion below:
>> http://servicemix.396122.n5.nabble.com/Camel-classpath-using-blueprint-inside-an-OSGi-bundle-tp5714018p5714083.html
>>
>> To unsubscribe from Camel classpath using blueprint inside an OSGi
>> bundle, click here
>> <http://servicemix.396122.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5714018&code=ZXBoZW1lcmlzLmxhcHBpc0BnbWFpbC5jb218NTcxNDAxOHw0OTQyMjM2NDI=>.
>> NAML
>> <http://servicemix.396122.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>
>
>
>
>
> --
> View this message in context: 
> http://servicemix.396122.n5.nabble.com/Camel-classpath-using-blueprint-inside-an-OSGi-bundle-tp5714018p5714085.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.



-- 

Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/>
Committer & Project Lead
OPS4J Pax for Vaadin
<http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project
Lead
blog <http://notizblog.nierbeck.de/>

Reply via email to