Programmering

Hej, OSGi, del 2: Introduktion til forårsdynamiske moduler

Hvis du har haft dit øre til jorden for nylig, har du sandsynligvis hørt meget om serviceorienteret applikationsudvikling med OSGi og Spring Dynamic Modules. I denne anden artikel i Hello, OSGi-serien, find ud af, hvorfor Spring DM er en så spændende mulighed for udviklere, der allerede er fortrolige med Spring-konfiguration, der ønsker at udnytte OSGis modularitet, nem versioning og applikations livscyklusunderstøttelse.

OSGi, også kendt som Dynamic Module System for Java, specificerer en modulær tilgang til Java-applikationsudvikling samt et sæt standardiserede metoder til styring af afhængigheder mellem moduler. Spring Dynamic Modules for OSGi Service Platforms-projektet (Spring DM) giver dig mulighed for at oprette Spring-applikationer, der kan implementeres i en OSGi-container. For Java-virksomhedsudviklere, der er fortrolige med Spring-programmerings- og konfigurationsmodellen, er Spring DM en lettere måde at blive fortrolig med OSGis modulære tilgang til applikationsudvikling. Ud over at give Spring-udviklere adgang til OSGis modulære ramme og dynamiske konfiguration, giver Spring DM den lave kodning, der kræves af de fleste OSGi-applikationer, så du kan fokusere på din applikations forretningslogik.

Den første artikel i denne serie ("Hej, OSGi, del 1: Bundler til begyndere") introducerede en standard tilgang til OSGi-udvikling ved hjælp af OSGi API og implementering af open source Equinox container. Du lærte om OSGi-arkitekturen, især containere og bundter, og havde din første erfaring med at udvikle en OSGi-baseret Hello World-applikation. Applikationseksemplet løb ikke meget dybt, fordi målet simpelthen var at forstå det grundlæggende i OSGi.

I denne artikel bygger du en anden Hello World-applikation, denne gang ved hjælp af Spring DM-rammen. Du lærer, hvad Spring DM er, og hvordan det udnytter OSGis adskillelse af applikationslogik i moduler, samt dets runtime-håndhævelse af modulgrænser. Du lærer også, hvordan du bruger Spring DM til at gøre følgende:

  • Installer, opdater og afinstaller moduler dynamisk i et kørende system.
  • Byg serviceorienterede applikationer (SOA'er) ved dynamisk at finde og bruge tjenester leveret af andre moduler i et system.
  • Brug forårets Datakilde klasse til at instantiere, konfigurere, samle og dekorere komponenter i og på tværs af systemmoduler.

Som du vil se, vil brugen af ​​Spring DM frigøre dig for noget af det rote arbejde, og endnu det hårdere arbejde med at forstå, hvad der sker under emhætten med OSGi. Som et resultat vil du være i stand til at komme dybere ind i din applikationslogik og gøre det hurtigere i udviklingsprocessen.

For at følge eksemplerne i denne artikel har du brug for et udviklingsmiljø bestående af Eclipse 3.3 og Spring Dynamic Modules. Til den sidste øvelse skal du også bruge en RDBMS som Apache Derby. Du finder mere nedenfor om opsætning af dit Spring DM-udviklingsmiljø i Eclipse 3.3.

OSGi og forårets ramme

I øjeblikket er OSGis popularitet meget stigende. Flere applikationsservere er blevet pakket om for at udnytte OSGis modulære ramme, herunder IBMs WebSphere Application Server, BEAs microService Architecture (mSA) og JOnAS 5, en open source applikationsserver bygget fra bunden på en OSGi-arkitektur. JBoss har også for nylig annonceret sit arbejde med en OSGi-baseret classloader og sin hensigt om at skabe en OSGi-kernespecifikationsimplementering. Måske vigtigst af alt er, at Eclipse Foundation's OSGi container / runtime-komponentmotor, Equinox, for nylig er blevet hævet til projektstatus på øverste niveau, hvor den vil tjene som grundlag for det nye Eclipse Runtime Initiative.

Allerede før OSGi opnåede sin nuværende stigning i popularitet, var der tale om at kombinere det med Spring. Til sidst førte denne samtale til Spring Dynamic Modules for OSGi Service Platforms-projektet. Funktionaliteten af ​​Spring DM kan opdeles i to hovedkomponenter: For det første giver det Spring framework JAR'er i form af OSGi-bundter. Som du ved fra den forrige artikel i denne serie, er OSGi-bundter intet andet end Java Archive (JAR) -filer, der indeholder yderligere poster i en META-INF / MANIFEST.MF fil, der fungerer som installationsbeskrivelsen for en OSGi-pakke. (Bemærk, at du ikke kan implementere en JAR-fil direkte, når du bruger OSGi; du skal pakke den ved hjælp af OSGi-bundtformatet.)

For det andet leverer Spring DM tre OSGi-specifikke Spring Bundles / JAR'er:

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

Applikationer bygget ved hjælp af Spring DM er bygget anderledes end dem, der bruger Spring-rammen. Når du bygger en Forår applikation, definerer du dine konfigurationsoplysninger i en eller flere Spring-konfigurationsfiler, som for det meste er XML-filer. Spring-rammen bruger disse konfigurationsfiler til at oprette et applikations-kontekstobjekt ved opstart af applikationen. Når applikationskonteksten er oprettet, bruges den til at instantiere, konfigurere, samle og dekorere objekter i applikationen.