Quelle est la meilleure façon de commencer avec OSGI?
Ce qui rend 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'utilisation 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 cobaye?
Vous devez vous connecter pour publier un commentaire.
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).
À 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.
De l'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 recommande:
Quelques liens:
Le Printemps DM Google Groupe est très réactif et convivial dans mon expérienceLe Printemps DM Google Groupe est n'est plus active et a déménagé à Eclipse.org comme le Gémeaux Plan de projet qui dispose d'un forum ici.
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 fournit un riche ensemble d'outils appelée "PAX", qui comprend:
Ensuite, il existe de nombreuses implémentations de OSGi recueil services:
.. et il est un utile, cadre independend de la communauté, - mais c'est maintenant de la publicité 😉
Cette réponse vient près de 3 ans après la question a été posée, mais la lien je viens de trouver est vraiment bon, surtout pour les débutants à l'aide de maven. Une étape-par-étape des explications.
Est de votre application existante ou monolithique niveaux dans le processus distincts/couches?
Si les niveaux, vous pouvez convertir le moyen/application de la couche de s'exécuter dans un conteneur OSGi.
Dans mon expérience de l'équipe, nous avons trouvé en essayant de faire le web des trucs dans OSGi douloureux. D'autres points de la douleur sont en veille prolongée et Jakarta Commons Logging.
- Je trouver les spécifications OSGi assez lisible et je vous conseille d'imprimer le diagramme qui montre l'algorithme de chargement de classe. Je vais vous garantir que vous aurez des moments de, "pourquoi suis-je un NoClassDefFoundError?": l'organigramme va vous dire pourquoi.
Essayer http://neilbartlett.name/blog/osgibook/. Le livre a les mains sur les exemples avec OSGi meilleures pratiques.
Essayer 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.
Il ya un couple de pense à garder à l'esprit si vous envisagez de commencer avec OSGi.
Comme mentionné ailleurs dans ce fil, connaître classloading est vraiment important. Dans mon expérience, tout le monde tôt ou tard des problèmes avec elle.
Une autre chose importante à retenir est de ne jamais tenir les références! Avoir un regard sur le tableau blanc motif sur lequel le concept de services d'OSGi est construire (voir le lien dans l'une des autres réponses).
Dans mon expérience, vous ne devriez pas essayer de convertir un monolitic application dans un OSGi basée sur un. Cela conduit généralement à un mal et ingérable mess. En démarrer un nouveau.
De télécharger l'un de l'librement disponible, autonome OSGi implémentations. J'ai trouvé Knopflerfish plutôt bonne et stable (je l'utilise dans de nombreux projets). Il est également livré avec beaucoup de codes sources. Vous pouvez le trouver ici: http://www.knopflerfish.org
Un autre bon tutoriel peut être trouvé ici. https://pro40.abac.com/deanhiller/cgi-bin/moin.cgi/OsgiTutorial
Peter Kriens de l'OSGi Alliance a donné une interview sympa: http://www.infoq.com/interviews/osgi-peter-kriens. Sa page d'accueil et sur le blog (qui est toujours une bonne lecture peuvent être trouvés ici: http://www.aqute.biz
J'aime vraiment le Apache Felix tutoriels. Cependant, je pense que, en général, en tirant parti de OSGi dans votre application n'est pas un de ceux "nous allons utiliser ce cadre, parce que c'est hype" de la décision. C'est plus une question de conception, mais alors tout ce qu'OSGi vous donne en termes de conception, vous pouvez avoir à la vanille, avec Java en tant que bien.
Que pour l'exécution, vous ne pouvez pas ajouter une application existante et d'en faire OSGi activé. Elle doit être la conception dynamique. Spring DM le rend facile de se cacher que de vous, mais il est toujours là et vous devez être conscient de cela.