Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Modularisation (OSGi, SCA...)
Modularisation (OSGi, SCA...) Forum d'entraide sur les architectures modulaires à base de composants et services (OSGi, SCA...). Avant de poster -> Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/01/2009, 15h05   #1
onlytoine
Membre actif
 
Inscription : mai 2002
Messages : 321
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2002
Messages : 321
Points : 163
Points : 163
Par défaut [OSGI] Déclaration des services

Bonjour,

Existe-t-il un moyen standard dans OSGi pour déclarer les services offerts par un bundle ?

IMyService = MyServiceImpl
etc...

Merci !

Anthony
onlytoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2009, 17h15   #2
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Salut,
Il existe à priori 2 façons officielles de le faire, et une autre devrait les rejoindre bientôt (introduite par Spring DM) :

1. Par programmation :

Dans ton activator :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Activator implements BundleActivator {
	private ServiceRegistration reg;
 
	public void start(BundleContext context) throws Exception {
		reg=context.registerService(IServiceInterface.class, new ServiceImple(), null);
	}
 
	public void stop(BundleContext context) throws Exception {
		if(reg!=null){
			reg.unregister();
		}
	}
}
http://www.eclipsezone.com/eclipse/forums/t90688.html
http://www.eclipsezone.com/eclipse/forums/t90796.html
http://www.eclipsezone.com/eclipse/forums/t91059.html

2. Declarative Services :
http://www.eclipsezone.com/eclipse/forums/t96740.html
http://www.eclipsezone.com/eclipse/forums/t97690.rhtml

3. Spring DM
Comparable à DS, mais en beaucoup plus puissant, car reposant sur les concepts de Spring (IoC par exemple).
http://springosgi.googlepages.com/
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2012, 18h48   #3
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 171
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 171
Points : 5 163
Points : 5 163
Bonjour,

je reveille cette vielle discussion car je cherche à définir un service dynamiquement.

j'ai un bundle qui reçois des demandes. à chaque demande il consulte une base de donnée qui contient des définition de ressources
pour chaque type de ressource il crée un objet qui implémente un service d'accès à cette resource.

mon problème est de déclarer ce service dans osgi.
je me demande comment faire.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 17h06   #4
Deaf
Membre émérite
 
Inscription : mars 2006
Messages : 807
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2006
Messages : 807
Points : 882
Points : 882
Bonjour,

je vais tenter de résumer:
  • un bundle B créée et publie un service S,
  • un appel à une méthode du service S doit provoquer la création et la publication d'un service T.
  • un autre appel au service S peut entraîner la création/publication d'un autre service U.
  • etc.
  • les service T et U (et les suivants) ne peuvent pas être définis avant l'exécution (=services dynamiques).

Si j'ai bien compris ton problème, une solution peut consister à:
  1. faire en sorte que S ait accès à son BundleContext*
  2. enregistrer 'manuellement' les services créés via la méthode BundleContext.registerService

*Il existe plusieurs moyens pour y parvenir:
  1. Si S est déclaré via Declarative Services, tu peux récupérer le Bundlecontext dans la méthode d'activation
  2. Si tu utilises SpringDM/GeminiBlueprint, il existe une interface BundleContextAware (de mémoire) que devra implémenter S
  3. Si tu publie S "à la main" la classe qui le publie possède le BundleContext et pourra le fournir à S via un setter ou le constructeur par exemple
Deaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 22h01   #5
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 171
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 171
Points : 5 163
Points : 5 163
merci pour toute ces infos
ça va me permettre de commencer à explorer une(des) solution(s)

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h44.


 
 
 
 
Partenaires

Hébergement Web