On 8/20/10 15:15, Van Geertruy, Michael wrote:
I just read excellent tutorial at 
http://felix.apache.org/site/apache-felix-osgi-faq.html, and have a question.

My osgi application is composed of 124 bundles when deployed in Karaf, if I deploy 
all dependent .jars as thier own bundles. When I only put an asterisk (*) in 
the<Export-Package>  tag of the maven-bundle-plugin, I noticed the following 
actions occured:
1) all dependent jars were unpacked and packaged inside of my application's 
bundle,
2) the "Import-Package" and "Export-Package" referred to all of the new 
packages in my app's bundle, including those of my application.

Now that's all good, because it should decrease the bundles I'll need to deploy 
from 124 down to 1, and it will make my features.xml file much smaller.  
However, when deploying the new bundle inside of Karaf (1.4.0), I got 
constraint violations for all of the items in my Import-Package portion of the 
MANIFEST.MF file. I guess imports get resolved before anything is exported.

Is there a way to keep the functionality listed above, and have karaf recognize 
that my package already contains the packages it needs, and doesn't need to 
look in OSGi for them?  The answer would seem to be to do something like
<Import-Package>!*</Import-Package>, which appears to be contrary to OSGI.

So, my question is, is there a preferred way to accomplish this?

It is likely that you don't need to import everything that you export, but you'd have to look at each export on a case-by-case basis to determine what makes sense, which would probably be no fun. The newer versions of BND have some built-in heuristics for determine when to import what you export, but unfortunately we're still waiting for it to be put into a maven repo so it can be integrated into maven-bundle-plugin.

If I had to guess, I'd imagine that your bundle exports some packages that the system bundle also exports and your bundle gets into conflicts this way. You could look for this case and try to fix it surgically by changing how it imports the involved packages. The simpler approach if you just want to get it working is to do use "*;-noimport:=true" for your export, then BND won't generate imports for what you export.

However, it seems that by lumping all bundles into one super bundle, you are sort of defeating the purpose of using OSGi in the first place, no?

-> richard


Mike Van, PMP, CSM, WTF?
################################################################################
If you have received this message in error, please contact the sender
immediately and be aware that the use, copying, or dissemination of
this information is prohibited. This email transmission contains
information from NCI Information Systems, Inc. that may be considered
privileged or confidential and is intended solely for the named
recipient.
################################################################################

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to