Ciao, OSGi, Parte 2: Introduzione ai moduli dinamici Spring

Se di recente hai avuto le orecchie a terra, probabilmente hai sentito parlare molto dello sviluppo di applicazioni orientate ai servizi con OSGi e Spring Dynamic Modules. In questo secondo articolo della serie Hello, OSGi, scopri perché Spring DM è un'opzione così interessante per gli sviluppatori che hanno già familiarità con la configurazione Spring, che desiderano sfruttare la modularità di OSGi, il facile controllo delle versioni e il supporto del ciclo di vita dell'applicazione.

OSGi, noto anche come Dynamic Module System per Java, specifica un approccio modulare allo sviluppo di applicazioni Java, nonché una serie di metodi standardizzati per la gestione delle dipendenze tra i moduli. Il progetto Spring Dynamic Modules for OSGi Service Platforms (Spring DM) consente di creare applicazioni Spring che possono essere distribuite in un contenitore OSGi. Per gli sviluppatori Java enterprise che hanno familiarità con il modello di programmazione e configurazione Spring, Spring DM è un modo più semplice per acquisire familiarità con l'approccio modulare di OSGi allo sviluppo di applicazioni. Oltre a consentire agli sviluppatori Spring di accedere al framework modulare e alla configurazione dinamica di OSGi, Spring DM fornisce la codifica di basso livello richiesta dalla maggior parte delle applicazioni OSGi, in modo che tu possa concentrarti sulla logica di business dell'applicazione.

Il primo articolo di questa serie ("Hello, OSGi, Part 1: Bundles for beginners") ha introdotto un approccio standard allo sviluppo di OSGi utilizzando l'API OSGi e l'implementazione del contenitore Equinox open source. Hai imparato a conoscere l'architettura OSGi, in particolare container e bundle, e hai avuto la tua prima esperienza nello sviluppo di un'applicazione Hello World basata su OSGi. L'esempio applicativo non è stato molto approfondito perché l'obiettivo era semplicemente quello di cogliere i fondamenti di OSGi.

In questo articolo, creerai un'altra applicazione Hello World, questa volta utilizzando il framework Spring DM. Imparerai cos'è Spring DM e come sfrutta la separazione OSGi della logica dell'applicazione in moduli, nonché la sua applicazione in runtime dei confini dei moduli. Imparerai anche come usare Spring DM per fare quanto segue:

  • Installa, aggiorna e disinstalla dinamicamente i moduli in un sistema in esecuzione.
  • Crea applicazioni orientate ai servizi (SOA) scoprendo e utilizzando dinamicamente i servizi forniti da altri moduli in un sistema.
  • Usa la DataSourceclasse Spring per istanziare, configurare, assemblare e decorare i componenti all'interno e attraverso i moduli del sistema.

Come vedrai, l'uso di Spring DM ti libererà da parte del lavoro meccanico e persino dal lavoro più duro di capire cosa sta succedendo sotto il cofano con OSGi. Di conseguenza, sarai in grado di approfondire la logica dell'applicazione e farlo prima nel processo di sviluppo.

Per seguire gli esempi in questo articolo avrai bisogno di un ambiente di sviluppo composto da Eclipse 3.3 e Spring Dynamic Modules. Per l'esercizio finale avrai bisogno anche di un RDBMS come Apache Derby. Di seguito troverai ulteriori informazioni sulla configurazione del tuo ambiente di sviluppo Spring DM in Eclipse 3.3.

OSGi e il framework Spring

Attualmente, la popolarità di OSGi è in forte aumento. Diversi application server sono stati riconfezionati per sfruttare il framework modulare di OSGi, tra cui WebSphere Application Server di IBM, microService Architecture (mSA) di BEA e JOnAS 5, un application server open source costruito da zero su un'architettura OSGi. JBoss ha anche recentemente annunciato il suo lavoro su un classloader basato su OSGi e la sua intenzione di creare un'implementazione delle specifiche di base OSGi. Forse la cosa più importante è che il motore dei componenti contenitore / runtime OSGi di Eclipse Foundation, Equinox, è stato recentemente elevato allo stato di progetto di primo livello, dove servirà come base per la nuova Eclipse Runtime Initiative.

Anche prima che OSGi raggiungesse il suo attuale aumento di popolarità, si parlava di combinarlo con la primavera. Alla fine, questo discorso ha portato al progetto Spring Dynamic Modules for OSGi Service Platforms. La funzionalità di Spring DM può essere suddivisa in due componenti principali: in primo luogo, fornisce JAR framework Spring sotto forma di bundle OSGi. Come saprai dall'articolo precedente di questa serie, i bundle OSGi non sono altro che file JAR (Java Archive) che contengono voci aggiuntive in un META-INF/MANIFEST.MFfile, che funge da descrittore di distribuzione per un bundle OSGi. (Si noti che non è possibile distribuire un file JAR direttamente quando si utilizza OSGi; è necessario impacchettarlo utilizzando il formato bundle OSGi.)

In secondo luogo, Spring DM fornisce tre pacchetti Spring / JAR specifici per OSGi:

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

Le applicazioni create utilizzando Spring DM sono costruite in modo diverso da quelle che utilizzano il framework Spring. Quando si crea un'applicazione Spring , si definiscono le informazioni di configurazione in uno o più file di configurazione Spring, che sono principalmente file XML. Il framework Spring utilizza questi file di configurazione per creare un oggetto contesto dell'applicazione all'avvio dell'applicazione. Dopo che il contesto dell'applicazione è stato creato, viene utilizzato per istanziare, configurare, assemblare e decorare gli oggetti all'interno dell'applicazione.