Stuart, David, thanks for the quick response.

I've already had a look at Declarative Services but I don't like the idea of configuring my application with XML-files. I've been working for some time with Spring thus I have seen the XML-hell. It took me about 3 hours to get a simple example run with Declarative Services (I hope there will be a better IDE support for DS in the near future). But what looks really interesting ist the Apache Felix Dependency Manager. Thanks a lot!

Regards,
Eugen

Am Apr 15, 2009 um 13:48  schrieb Stuart McCulloch:

2009/4/15 Eugen Reiswich <[email protected]>
Hi folks,

I'm developing applications which are based on OSGi. In 80%-90% of my time I don't use the hot plugging ability of OSGi but rather the component and service based development possibilities. Even though I don't need the hot plugging ability I need to use the cumbersomely SerivceTracker to retrieve my services. It was a pain to write a ServiceTracker with addingService() and removedService() methods for each service even though each ServiceTracker is almost doing the same stuff. So I decided to look for a better solution. From my point of view the Spring Dynamic Modules approach is just to heavy weighted and to handle all those XML-files is a different pain. Afterwards I found an approach called "Peaberry" but this approach depends on annotations which have other disadvantages.

yes, both XML and annotations have their pros and cons - actually with Guice / peaberry you can use XML to configure bindings (by scraping the XML and calling the builder API
directly) but you'd still need to annotate your injection points...

although I should mention the Guice build shipped with peaberry 1.1 can support injection listeners, which means you can implement other injection strategies like EJB @Resource:

   http://code.google.com/p/google-guice/issues/detail?id=258#c42

   http://code.google.com/p/guiceyfruit     (example use of listeners)

but this feature still needs to be documented on the Guice wiki and must be used carefully :)

At the end of the day I wrote my own Dependency-Injection approach which is based on OSGi. I would like to ask you whether there is something similar to this so I don't need to reinvent the wheel again.

there are a few other service injection approaches with low overhead:

Declarative Services - OSGi standard, several implementations, uses XML to configure http://www.eclipsezone.com/eclipse/forums/t96740.html (good introduction)

Apache Felix iPOJO - supports both XML and annotations, flexible, uses bytecode manipulation
   http://felix.apache.org/site/apache-felix-ipojo.html

Apache Felix Dependency Manager - Java builder API, a bit similar to your current approach
   http://felix.apache.org/site/apache-felix-dependency-manager.html

HTH  -  hopefully there's something out there that matches your needs

Here's the code how I do inject a service.

private ServiceTracker _tracker;
private AccountManagerImpl _accountManager;

public void start(BundleContext context) throws Exception {
        _accountManager = new AccountManagerImpl();

        /*
* This does create a ServiceTracker for the given service. When addingService(...) or removedService(...) methods are called, the appropriate bindXYZService(...) and unbindXYZService(...) methods are called on the given object (_accountManager).
        */
_tracker = bindService(IAccountService.class, context).toObject(_accountManager);
        _tracker.open();
}

// The serviceTracker is closed within the stop-Method
public void stop(BundleContext context) throws Exception {
        _tracker.close();
}

I expect the _accountManager to have a "bind"-Method with IAccountService as a parameter:

public void bindAccountService(IAccountService accountService) {
        _accountService = accountService;
}

I would really appreciate if someone could help me to solve my problem.

Cheers,
Eugen

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



--
Cheers, Stuart
_______________________________________________
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