2009-08-31 14 views
8

Je suis novice en programmation avec OSGI. Quelqu'un peut-il me fournir un exemple de fonctionnement d'un appel de service osgi client/serveur.Exemple de travail pour un service OSGI distant

J'ai essayé d'accomplir cela pendant les 2 dernières semaines sans aucun succès.

Mon service est découvert et exécuté par une instance d'éclipse dans la même machine, mais lorsque j'essaie la même chose à partir d'une autre machine, elle échoue.

Toute aide sera appréciée.

Merci.

Répondre

8

Dans la plate-forme OSGi (version 4 version 4.1), les services locaux sont disponibles uniquement dans une instance de structure OSGi unique (c'est-à-dire une seule machine virtuelle Java). Vous ne pouvez pas espérer exécuter un service OSGi exécuté sur une machine différente. Si vous souhaitez appeler les services OSGi sur plusieurs instances de structure (par exemple, plusieurs machines virtuelles Java/plusieurs machines), consultez la spécification OSGi distribuée (RFC 119) qui fera partie de upcoming OSGi specification (Release 4 Version 4.2) avec CXF en tant que reference implementation.

Mise à jour: Une autre façon d'appeler des services OSGi distants consiste à utiliser R-OSGi. C'est un intergiciel qui fournit un moyen presque transparent d'accéder aux services sur les plates-formes OSGi à distance.

+0

La page CXF contient un tas d'échantillons au bas de la page. – SteveD

2

Sauf si vous jouez avec les implémentations OSGi distribuées de CXF ou d'Eclipse, il n'y a rien de relatif à la communication à distance dans OSGi. Vous devriez être en mesure de faire fonctionner toute mise en œuvre à distance entre deux processus basés sur OSGi. Ce que je vais dire, c'est que vous aurez probablement des problèmes avec le chargeur de classe si vous essayez d'utiliser RMI ou l'un des patterns RPC disponibles dans le remoting de Spring. Ceci est solvable, mais nécessite une bonne compréhension de OSGi et des chargeurs de classe.

Votre code fonctionne-t-il si vous l'exécutez en dehors d'OSGi? Utilisez-vous un pare-feu? Pouvez-vous exécuter sur votre PC un service réseau visible par les autres ordinateurs du réseau? Comme décrit, le problème semble plus lié au réseau qu'à celui de l'OSGi.

De même, vous n'avez pas mentionné les pannes que vous rencontrez lorsque vous utilisez différents PC.

3

Les services OSGi sont intra-vm, pas inter-vm, sauf si vous ajoutez une distribution en haut.

Vous voudrez peut-être regarder Brian's tutorial qui montre bien comment les services OSGi peuvent être exportés et utiliser ECF pour effectuer la distribution à distance. Il y a pas mal de paquets en jeu, mais il fait du bon travail pour l'expliquer.

1

La plate-forme Riena de la fondation eclipse fournit OSGi remote services en publiant les services en tant que points de terminaison de service Web.

1

Peut-être que les réponses devraient être mises à jour, car elles ne sont plus valables.

Désormais, OSGi Remote Services est disponible. Vous pouvez en lire plus à ce sujet dans la spécification OSGi Enterprice Chapitre 100. Il existe deux implémentations principales: Eclipse ECF et Apache CXF.Il y a un bon exemple pour l'ECF here

Questions connexes