Multiple Dependencies - serviceChanged [message #83524] |
Mon, 19 February 2007 18:56 |
Eclipse User |
|
|
|
Originally posted by: dieter.schulten.d-velop.de
If you want to create a osgi bundle that dependes on e.g four other
services.
How do you manage those dependencies?
Do you register a serviceListener like context.addServiceListener(this)
and listen for all services you need in the public void
serviceChanged(ServiceEvent event)
method? And only if all services you need are available your bundle get the
state
"ready to work"?
public void serviceChanged(ServiceEvent event) {
String[] objectClass =
(String[])event.getServiceReference().getProperty("objectClass ");
if (event.getType() == ServiceEvent.REGISTERED) {
if (objectClass[0].compareTo(LogService.class.getName()) != 0)
registerLogger();
else if (objectClass[0].compareTo(OtherService.class.getName()) !=
0) registerOtherService();
else if (objectClass[0].compareTo(OtherService.class.getName()) !=
0) .....
}
}
Or is there a more elegant (other,better) way?
|
|
|
Re: Multiple Dependencies - serviceChanged [message #83540 is a reply to message #83524] |
Tue, 20 February 2007 07:34 |
Eclipse User |
|
|
|
Originally posted by: tonimenzel.gmx.de
Hi Dieter,
ServiceTracker is probably what you are looking for:
http://www2.osgi.org/javadoc/r4/org/osgi/util/tracker/Servic eTracker.html
Using Declarative Services is another (probably more elegant):
possibility: see official osgi papers and
- http://www.eclipsezone.com/articles/extensions-vs-services/
for more.
or just ask here;-)
regards, Toni
Dieter schrieb:
> If you want to create a osgi bundle that dependes on e.g four other
> services.
> How do you manage those dependencies?
>
> Do you register a serviceListener like context.addServiceListener(this)
> and listen for all services you need in the public void
> serviceChanged(ServiceEvent event)
> method? And only if all services you need are available your bundle
get the
> state
> "ready to work"?
>
> public void serviceChanged(ServiceEvent event) {
>
> String[] objectClass =
> (String[])event.getServiceReference().getProperty("objectClass ");
>
> if (event.getType() == ServiceEvent.REGISTERED) {
>
> if (objectClass[0].compareTo(LogService.class.getName()) != 0)
> registerLogger();
>
>
> else if
(objectClass[0].compareTo(OtherService.class.getName()) !=
> 0) registerOtherService();
>
> else if
(objectClass[0].compareTo(OtherService.class.getName()) !=
> 0) .....
>
> }
>
> }
>
>
> Or is there a more elegant (other,better) way?
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.03008 seconds