Bonjour, OSGi, Partie 2: Introduction aux modules dynamiques Spring

Si vous êtes récemment à l'oreille du terrain, vous avez probablement beaucoup entendu parler du développement d'applications orientées services avec OSGi et Spring Dynamic Modules. Dans ce deuxième article de la série Hello, OSGi, découvrez pourquoi Spring DM est une option si intéressante pour les développeurs déjà familiarisés avec la configuration de Spring, qui souhaitent exploiter la modularité d'OSGi, la gestion simplifiée des versions et le support du cycle de vie des applications.

OSGi, également connu sous le nom de Dynamic Module System for Java, spécifie une approche modulaire du développement d'applications Java, ainsi qu'un ensemble de méthodes standardisées pour gérer les dépendances entre les modules. Le projet Spring Dynamic Modules for OSGi Service Platforms (Spring DM) vous permet de créer des applications Spring pouvant être déployées dans un conteneur OSGi. Pour les développeurs d'entreprise Java familiarisés avec le modèle de programmation et de configuration Spring, Spring DM est un moyen plus simple de se familiariser avec l'approche modulaire d'OSGi pour le développement d'applications. En plus de permettre aux développeurs Spring d'accéder à la structure modulaire et à la configuration dynamique d'OSGi, Spring DM fournit le codage de bas niveau requis par la plupart des applications OSGi, afin que vous puissiez vous concentrer sur la logique métier de votre application.

Le premier article de cette série («Hello, OSGi, Part 1: Bundles for beginners») a présenté une approche standard du développement OSGi en utilisant l'API OSGi et l'implémentation open source du conteneur Equinox. Vous avez découvert l'architecture OSGi, en particulier les conteneurs et les bundles, et avez eu votre première expérience dans le développement d'une application Hello World basée sur OSGi. L'exemple d'application n'a pas été très approfondi car le but était simplement de saisir les fondamentaux d'OSGi.

Dans cet article, vous allez créer une autre application Hello World, cette fois en utilisant le framework Spring DM. Vous apprendrez ce qu'est Spring DM et comment il exploite la séparation de la logique d'application d'OSGi en modules, ainsi que son application d'exécution des limites de module. Vous apprendrez également à utiliser Spring DM pour effectuer les opérations suivantes:

  • Installez, mettez à jour et désinstallez dynamiquement des modules dans un système en cours d'exécution.
  • Créez des applications orientées services (SOA) en découvrant et en utilisant de manière dynamique les services fournis par d'autres modules d'un système.
  • Utilisez la DataSourceclasse de Spring pour instancier, configurer, assembler et décorer des composants dans et entre les modules système.

Comme vous le verrez, l'utilisation de Spring DM vous libérera d'une partie du travail par cœur, et même du travail plus difficile de comprendre ce qui se passe sous le capot avec OSGi. En conséquence, vous pourrez approfondir la logique de votre application et le faire plus tôt dans le processus de développement.

Pour suivre les exemples de cet article, vous aurez besoin d'un environnement de développement composé d'Eclipse 3.3 et de modules dynamiques Spring. Pour l'exercice final, vous aurez également besoin d'un SGBDR tel qu'Apache Derby. Vous trouverez ci-dessous plus d'informations sur la configuration de votre environnement de développement Spring DM dans Eclipse 3.3.

OSGi et le framework Spring

Actuellement, la popularité d'OSGi est à la hausse. Plusieurs serveurs d'applications ont été reconditionnés pour tirer parti de la structure modulaire d'OSGi, notamment WebSphere Application Server d'IBM, microService Architecture (mSA) de BEA et JOnAS 5, un serveur d'applications open source construit à partir de zéro sur une architecture OSGi. JBoss a également récemment annoncé son travail sur un chargeur de classe basé sur OSGi et son intention de créer une implémentation de spécification de base OSGi. Peut-être plus important encore, Equinox, le moteur de conteneur / composant d'exécution OSGi de la Fondation Eclipse, a récemment été élevé au statut de projet de premier niveau, où il servira de base à la nouvelle initiative d'exécution Eclipse.

Même avant qu'OSGi n'atteigne sa popularité actuelle, il était question de le combiner avec Spring. Finalement, cet entretien a conduit au projet Spring Dynamic Modules for OSGi Service Platforms. La fonctionnalité de Spring DM peut être divisée en deux composants principaux: Premièrement, il fournit des JAR de framework Spring sous la forme de bundles OSGi. Comme vous le savez dans l'article précédent de cette série, les bundles OSGi ne sont rien d'autre que des fichiers Java Archive (JAR) qui contiennent des entrées supplémentaires dans un META-INF/MANIFEST.MFfichier, qui sert de descripteur de déploiement pour un bundle OSGi. (Notez que vous ne pouvez pas déployer un fichier JAR directement lorsque vous utilisez OSGi; vous devez le conditionner à l'aide du format de bundle OSGi.)

Deuxièmement, Spring DM fournit trois bundles / JAR Spring spécifiques à OSGi:

  • org.springframeork.osgi.bundle.extender
  • org.springframeork.osgi.bundle.core
  • org.springframeork.osgi.bundle.io

Les applications créées à l'aide de Spring DM sont construites différemment de celles qui utilisent le framework Spring. Lorsque vous créez une application Spring , vous définissez vos informations de configuration dans un ou plusieurs fichiers de configuration Spring, qui sont principalement des fichiers XML. Le framework Spring utilise ces fichiers de configuration pour créer un objet de contexte d'application au démarrage de l'application. Une fois le contexte d'application créé, il est utilisé pour instancier, configurer, assembler et décorer des objets dans l'application.