Thanks BJ, I was aware of org.osgi.framework.system.packages.extra but I
had overlooked org.osgi.framework.bundle.parent=app. It's no problem to
set these as I am indeed in charge of launching the framework.

Do I also need to take some steps to ensure that the consumers get wired
up to my bundle rather than to the system bundle - or maybe that doesn't
matter, so long as my bundle is registering the services?

Thanks, Chris

> First, you will need to get the system bundle to export the necessary
> packages. This could be done with the system.classpath.extra launch
> property or a framework extension fragment with an Export-Package header.
> The latter doesn't require you to be in control of launching the framework
> but you probably need to be to get your jar on the CLASSPATH. You will
> probably need to make sure that bundle's parent class loader is the
> application class loader rather than the default of the boot class loader.
>
> http://www.osgi.org/javadoc/r4v43/core/org/osgi/framework/Constants.html#FRAMEWORK_BUNDLE_PARENT_APP
> But this is also a launch property :-)
>
> Then your bundle can just import the necessary packages which you arranged
> above to be exported and the component description XML you supply will do
> the job. As for bnd, just -includeresource your XML and add a
> Service-Component header which references the XML.
> --
>
> BJ Hargrave
> Senior Technical Staff Member, IBM
> OSGi Fellow and CTO of the OSGi Alliance
> [email protected]
>
> office: +1 386 848 1781
> mobile: +1 386 848 3788
>
>
>
>
> From:   [email protected]
> To:     "'OSGi Developer Mail List'" <[email protected]>
> Date:   2014/10/01 15:50
> Subject:        [osgi-dev] Faking DS for classpath libraries
> Sent by:        [email protected]
>
>
>
> Hello gang,
>
> What I am trying to do is a bit underhand, but maybe no more so than some
> of the other ideas I've seen discussed here recently ...
>
> I have a library which is suitable for use as a provider of OSGi services
> (because it was conceived that way), but for reasons I really really do
> not intend to go into here it is going to have to be loaded on the dear
> old linear CLASSPATH (in all-caps, to bring out the retro-flavour of this
> concept). Despite this I would like the services to pop up in the service
> registry just as they would if the library was loaded as a bundle, so that
> other bundles which use DS are able to handle service references in the
> same way.
>
> I can see two ways to do this: 1) write some code which creates instances
> of all the service classes and registers them with the framework (in
> effect a fake SCR), or 2) create a bundle which contains no code but does
> contain some Service-Component XML to "fool" the SCR into doing the work.
> Of these the second approach promises to be the more maintainable once I
> get it to work, but there are a few bridges to be crossed along the way
> ...
>
> The main issues I have are 1) determining the right combination of
> framework properties etc. to get the packages in question to be exported
> by the "fake" bundle, and 2) getting bnd[tools] to generate the right
> Manifest and Service-Component files so that I can automate the build
> process.
>
> Any ideas?
>
> Regards, Chris
>
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev


_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to