karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Feature Dependencies load order
Date Wed, 20 Jul 2011 19:30:46 GMT

On Jul 20, 2011, at 10:02 AM, simplemind wrote:

> I have discovered the problem.  Actually it is 2 issues, one is with
> webconsole and the other is with wrap.  I am still not sure about
> start-priority, but I think lower number means lower priority.

The startlevel service starts at priority 1 (or 0, I'm not sure) and loads all the bundles
at that level, starts them, increases the start level by one, and repeats until done.
> The problem with webconsole is that it times out.   If you click on load a
> feature that takes a while to load the webconsole request times out and
> kills the feature load at whatever point it happens to be.  For instance, in
> karaf 2.2.2 on my machine I cannot even load the 'war' feature from the
> webconsole because it just takes too long.
> The second issue is a really strange one with wrap.  Suppose bundle A
> exports a package a.a.a.  And suppose B is a wrapped (legacy jar) bundle. 
> If I make a feature that has B before A and load the feature and look at B
> it shows a.a.a as an optional import in the manifest headers, plus a.a.a was
> not imported.  But if you load a feature that has A before B, then the
> loaded B has a.a.a in the Imports.
> Easy enough to work around these, but they are both big "gochas" that had me
> confused in combination for a few wasted hours.  If anyone cares to explain
> how wrap is determining what are optional imports I would be interested. 
> Seems like a bug, because in my case a.a.a was being used and should have
> been imported no matter the load order.  Also, why does wrapped bundle link
> optional imports if they happen to already be loaded into karaf when the
> bundle is loaded?

I think wrap marks all imports as optional.  This is sort of reasonable if you have no idea
what the jar does and what actually is optional, but obviously ridiculous if you do know what
the jar does.  So, its a good idea to actually look into the contents and figure out what
is optional and what isn't.  You can then write a "bundleizing" maven project that repackages
the jar as a bundle or (I think, I never tried it) provide a lot of info in the wrap url telling
bnd what to do.

Optional package imports work like this: if the optional package happens to be available when
the bundle starts, it's wired in.  If it doesn't happen to be available, it is not wired in
even if the package becomes available later, and if you want to get it wired in you have 
to refresh the bundle with the optional import.  So you are observing the normal optional
package import behavior.

You can also use dynamic-import-package which will check for the package every time you try
to use the wire, but this can have performance implications.

hope this helps....
david jencks

> --
> View this message in context: http://karaf.922171.n3.nabble.com/Feature-Dependencies-load-order-tp3184561p3185973.html
> Sent from the Karaf - User mailing list archive at Nabble.com.

View raw message