[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[equinox-dev] Re: Adding to the framework exported libraries?
|
I've been wondering how to register services from a fragment.
As far as I know, a fragment *cannot* have a bundle activator.
Without a bundle activator, how does a fragment get access to its
bundle context through which it can register services?
What am I missing?
/djk
Message: 4
Date: Mon, 12 Feb 2007 07:44:35 +0100
From: Gunnar Wagenknecht <gunnar@xxxxxxxxxxxxxxx>
Subject: [equinox-dev] Re: Adding to the framework exported libraries?
To: equinox-dev@xxxxxxxxxxx
Message-ID: <eqp2ci$9e1$1@xxxxxxxxxxxxx>
Content-Type: text/plain; charset=ISO-8859-1
Kabe wrote:
> Hi Tom, thanks for the suggestion. Only reason i don't think this
will
> work (and maybe i'm wrong?) is that i need my host application to
expose
> instances (services) to the bundles, so for example my host
application
> creates in instance of FooService, and then registers it with the
root
> BundleContext of the Equinox framework. However, unless i somehow
tell
> Equinox that the package is available from the host (parent
classloader)
> it won't let any bundle load that depends on this package. So far
i'm
> not seeing how Fragment Bundles can solve this problem, because they
> seem like they need to be full bundles and not just passed in,
but there
> could be some API or technique i'm not familiar with?
The system bundle is "org.eclipse.osgi". It exports the system
packages.
Fragments contribute to the classpath of their bundle host. Thus,
if you
create a fragment to "org.eclipse.osgi" you can add the packages from
your application to the set of exported packages of the system bundle,
which makes them available to all bundles.
For registering your services from the host application I suggest
creating a bundle that is started when the framework is started. This
bundle can register any OSGi services, etc. It could be also the
fragment you created above.
Cu, Gunnar