Dmitry, The Bnd tool from Peter Kriens is pretty good for this (http://www.aQute.biz/Code/Bnd)
However, I'm surprised that most of your JARs are not available as bundles. The SpringSource repository in particular is very comprehensive and includes almost every open source Java library I've ever heard of (and a great many I haven't). Are you using a lot of specialised or closed source libraries? Regards, Neil On Wed, Mar 18, 2009 at 10:18 PM, Dmitry Skavish <[email protected]> wrote: > Neil, > > Thanks. I thought about it, but rejected because we have about 150 those jars > and most of them are not available in bundleized version. I believe that > would be the right way to do, it just requires some work which I am not sure > I can afford right now. > > So I guess this is the "official" way to approach it, right? > > Is there a tool which can convert a jar into a bundle? > > Thanks! > > -----Original Message----- > From: Neil Bartlett [mailto:[email protected]] > Sent: Wednesday, March 18, 2009 6:02 PM > To: [email protected] > Subject: Re: how to use classes from system classloader > > Dmitry, > > You appear to be missing the most obvious solution, which is to turn > each of the third party libraries into its own bundle. And in many > cases you won't have to do this yourself, you can use an already > "bundleized" version of the library from one of the common > repositories such as OBR, SpringSource, Eclipse Orbit, etc. > > Regards, > Neil > > On Wed, Mar 18, 2009 at 9:47 PM, Dmitry Skavish > <[email protected]> wrote: >> Hello, >> >> I am complete novice in OSGi and I am stuck trying to find the best solution >> to the following problem (which I think should be fairly typical): >> >> We have a large desktop application which we are trying to break into OSGi >> bundles. The application uses quite a few third party libraries. We want to >> make those libraries available to every bundle. But it does not seem to be >> that easy. I tried several approaches and I am satisfied with none :( >> >> I know about properties: FRAMEWORK_SYSTEMPACKAGES and >> FRAMEWORK_BOOTDELEGATION. So I set FRAMEWORK_BOOTDELEGATION to "*" and I DO >> NOT set FRAMEWORK_SYSTEMPACKAGES to anything. >> >> What I discovered is that in this case if package which comes from libraries >> on a classpath IS present in Import-Package in bundle's manifest then this >> bundle won't be resolved (error). But if the package IS NOT present in >> Import-Package (or is marked with resolution=optional) then the bundle will >> be resolved (naturally). >> >> But in the second case I can use the classes from this package from inside >> the bundle! So I don't have package in Import-Package, but I can use classes >> from this package! But when I have package in Import-Package I can't use >> classes (the bundle is not even resolved)! >> >> It seems to me there is inconsistency here between bundle resolution process >> and classloading. >> >> Yes, I know that if I use FRAMEWORK_SYSTEMPACKAGES property and put all my >> third-party packages into it the bundle resolution will work just fine. >> >> So as far as I understand there are 3 ways to make third libraries available >> to all my bundles: >> >> >> 1. put all the packages from those libraries into >> FRAMEWORK_SYSTEMPACKAGES property and set FRAMEWORK_BOOTDELEGATION to "*" >> >> 2. put all the libraries (jars) into a separate bundle >> >> 3. set FRAMEWORK_BOOTDELEGATION to "*" and remove packages of those >> third-party jars from Import-Package entry from all bundle's manifests (or >> mark them with resolution=optional) >> >> I don't like the first case because I need to extract package names from all >> those third-party jars at build time and somehow pass this information to my >> java code which starts felix so that I can put it into >> FRAMEWORK_SYSTEMPACKAGES property. >> >> I don't like the second case because I end up with one huge bundle which >> contains all the third-party libraries. I don't like it for several reasons, >> one being load time and another pure aesthetics. >> >> I don't like the third case because that is not how it is supposed to be >> used and basically is a hack. >> >> Am I missing anything? What is the "official" way of achieving it? >> >> Thank you! >> -- >> Dmitry Skavish >> > > --------------------------------------------------------------------- > 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]

