44 votes

Quelle est la meilleure façon de commencer avec OSGI?

Ce qui fait qu'un module de service et/ou le peu de fonctionnalité de l'application un très bon candidat pour un OSGi module?

Je suis intéressé par l'utilisation OSGi dans mes applications. Nous sommes une Java boutique et nous utilisons Printemps assez largement, de sorte que je suis penchée vers l'aide de Spring Dynamic Modules pour OSGi(tm) plates-formes de Services. Je suis à la recherche d'un bon moyen d'incorporer un peu d'OSGi dans une application comme une épreuve. Quelqu'un a utilisé ce ou un analogue de la technologie OSGi? Existe-il des pièges?

@Nicolas - Merci, j'ai vu celui-là. C'est un bon tuto, mais je suis à la recherche de plus pour des idées sur la façon de faire mon premier "vrai" bundle OSGi, par opposition à un exemple Hello World.

@david - Merci pour le lien! Idéalement, avec une nouvelle application, j'avais tout pour être dynamique. Ce que je cherche pour l'instant, bien que, est de l'introduire dans un petit morceau d'une application existante. En supposant que je peux choisir n'importe quel morceau de l'application, quels sont les facteurs à envisager afin de faire de cette pièce une meilleure ou pire qu'une OSGi cochon de guinée?

41voto

Boris Terzic Points 6148

Eh bien, puisque vous ne pouvez pas avoir une partie OSGi et une partie non-OSGi vous aurez besoin pour faire de l'ensemble de votre application OSGi. Dans sa forme la plus simple, vous faites un seul bundle OSGi de l'ensemble de votre application. Clairement, ce n'est pas une meilleure pratique, mais il peut être utile pour obtenir une sensation pour le déploiement d'un faisceau dans un conteneur OSGi (Équinoxe, Felix, Knoplerfish, etc).

Pour le prendre au prochain niveau que vous aurez envie de commencer la division de votre application en composants, les composants doivent généralement avoir un ensemble de responsabilités qui peuvent être isolées du reste de votre demande par le biais d'un ensemble d'interfaces et de la classe des dépendances. L'identification de ces purement à la main peut varier de plutôt simple pour un bien conçu, très cohérent, mais faiblement couplé application à un cauchemar pour contrefil code source que vous n'êtes pas familier avec.

Un peu d'aide peut provenir d'outils comme JDepend qui peut vous montrer le couplage de paquets Java contre d'autres packages/classes dans votre système. Un package avec un faible couplage efférent devrait être plus facile à extraire dans un bundle OSGi qu'avec couplage efférent. Encore plus aperçu de l'architecture peut être eu avec pro tools comme Structure 101.

Purement sur le plan technique, le travail au quotidien avec une application qui se compose de 160 bundles OSGi et à l'aide de Spring DM je peux confirmer que la transition de la "normale" Printemps de Printemps DM est en grande partie libre de douleur. Le supplément d'espace de noms et le fait que vous pouvez (et devriez) isoler votre OSGi spécifiques Printemps de configuration dans des fichiers séparés rend encore plus facile d'avoir à la fois avec et sans OSGi scénarios de déploiement.

OSGi est un profond et large, un modèle de composant, de la documentation, je vous recommande:

  • OSGi R4 Spécification: Obtenir le Pdf de la Base et Recueil de spécifications, ils sont canonique, autoritaire et très lisible. Un raccourci vers eux à portée de main à tout moment, vous pourrez les consulter.
  • Lire sur OSGi meilleures pratiques, il ya un grand nombre de choses que vous pouvez faire, mais un peu plus petit ensemble de choses que vous devriez faire, et il ya certaines choses que vous devriez jamais le faire (DynamicImport: * par exemple).

Quelques liens:

9voto

Toni Menzel Points 521

Lors de l'apprentissage d'une nouvelle technologie riche outillage vous met dans les choses sans les gros maux de tête. À ce stade, la communauté à ops4j.org offre un riche ensemble d'outils appelée "PAX", qui comprend:

  • Pax Runner: Exécuter et de basculer entre Felix, Équinoxe, Knopflerfish service de Conciergerie et facilement
  • Pax Construire: Construire, Organiser et Construire OSGi projets avec maven facilement
  • Pax Drone: Testez votre bundles OSGi avec Junit, tout en étant cadre, indépendant (utilise PaxRunner)

Ensuite, il existe de nombreuses implémentations de OSGi recueil de services:

  • Pax Journalisation (logging),
  • Pax Web (http),
  • Pax Web Extender (guerre de soutien),
  • Pax Pièce (configuration),
  • Pax Shell (shell mise en œuvre, le cadre de la prochaine osgi libération)
  • et bien plus encore.

.. et il est un utile, cadre independend de la communauté, - mais c'est maintenant de la publicité ;-)

5voto

JVerstry Points 12414

Cette réponse vient près de 3 ans après la question a été posée, mais le lien que je viens de trouver est vraiment bon, surtout pour les débutants à l'aide de maven. Une étape-par-étape des explications.

4voto

Kamlesh Points 21

Essayez http://neilbartlett.name/blog/osgibook/. Le livre a les mains sur les exemples avec OSGi meilleures pratiques.

4voto

Wazza Points 51

Essayez http://njbartlett.name/files/osgibook_preview_20091217.pdf

OU

http://www.manning.com/hall/

La deuxième n'est pas un livre que j'ai lu moi-même, mais j'ai entendu de bonnes choses à ce sujet.

La première a été très utile pour moi. Il vous emmène à travers l'architecture d'abord et ensuite c'est les mains sur OSGi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X