2010-06-16 3 views
2

Je commence à approfondir l'utilisation des services Spring DM et OSGi dans une application RCP. J'ai créé un service qui est utilisé par un autre groupe dans l'application RCP. Il effectue une recherche du service via des appels à getBundleContext(). GetServiceReference() en utilisant les noms de regroupement explicites et les noms de classe de service. Je n'utilise pas DI n'importe où pour le moment. Le problème que je rencontre est que le service renvoyé dans le bundle demandeur est un singleton. Parfois, je remarque un problème de threading car il s'agit d'un service "stateful". Comment configurer l'application pour récupérer une nouvelle instance de service avec chaque appel?Comment configurer le service Spring-DM OSGi pour une nouvelle instance par appel?

Voici le contenu de mon fichier xml printemps qui enregistre le service:

<bean id="myServBean" class="com.xyz.ClassImpl"/> 
<osgi:service ref="myServBean" class="com.xyz.Class"/> 

Répondre

2

services OSGi en général peuvent être appelés simultanément par plusieurs clients. La seule chose prise en charge par OSGi est l'utilisation d'un ServiceFactory, qui vous permet de renvoyer une instance différente à chaque groupe de clients invoquant. Il n'y a pas de mécanisme standard pour créer une nouvelle instance par appel de méthode. Vous devrez gérer cela dans votre implémentation de service.

+0

Merci, c'est aussi ce que j'ai lu dans d'autres endroits et je voulais confirmer. – Bhav

Questions connexes