Здравейте, OSGi, Част 2: Въведение в пролетните динамични модули

Ако наскоро сте ушили земята, вероятно сте чували много за ориентирано към услугите разработване на приложения с OSGi и Spring Dynamic Modules. В тази втора статия от серията Hello, OSGi разберете защо Spring DM е толкова вълнуваща опция за разработчици, които вече са запознати с конфигурацията на Spring, които искат да използват модулността на OSGi, лесната версия и поддръжката на жизнения цикъл на приложенията.

OSGi, известен също като Dynamic Module System for Java, определя модулен подход към разработването на Java приложения, както и набор от стандартизирани методи за управление на зависимости между модулите. Проектът Spring Dynamic Modules за OSGi Service Platforms (Spring DM) ви позволява да изграждате Spring приложения, които могат да бъдат разположени в OSGi контейнер. За Java корпоративни разработчици, запознати с модела за програмиране и конфигуриране на Spring, Spring DM е по-лесен начин да се запознаят с модулния подход на OSGi към разработването на приложения. Освен че позволява на разработчиците на Spring да имат достъп до модулната рамка и динамичната конфигурация на OSGi, Spring DM осигурява кодирането на ниско ниво, изисквано от повечето приложения на OSGi, така че можете да се съсредоточите върху бизнес логиката на вашето приложение.

Първата статия от тази поредица ("Здравейте, OSGi, Част 1: Пакети за начинаещи") въведе стандартен подход към разработването на OSGi, използвайки OSGi API и внедряването на контейнера Equinox с отворен код. Научихте за OSGi архитектурата, особено за контейнери и пакети, и имахте първия си опит в разработването на базирано на OSGi приложение Hello World. Примерът за приложението не работи много дълбоко, защото целта беше просто да се разберат основите на OSGi.

В тази статия ще създадете друго приложение Hello World, този път използвайки Spring DM framework. Ще научите какво е Spring DM и как използва разделянето на логиката на приложението на OSGi на модули, както и нейното изпълнение по време на границите на модулите. Също така ще научите как да използвате Spring DM, за да направите следното:

  • Динамично инсталирайте, актуализирайте и деинсталирайте модули в работеща система.
  • Изграждайте сервизно ориентирани приложения (SOA) чрез динамично откриване и използване на услуги, предоставяни от други модули в системата.
  • Използвайте DataSourceкласа на Spring, за да създадете инстанции, конфигуриране, сглобяване и декориране на компоненти в и между системните модули.

Както ще видите, използването на Spring DM ще ви освободи от част от работата и дори по-трудната работа да разберете какво се случва под капака с OSGi. В резултат на това ще можете да навлезете по-дълбоко в логиката на приложението си и да го направите по-рано в процеса на разработка.

За да следвате примерите в тази статия, ще ви е необходима среда за разработка, състояща се от Eclipse 3.3 и Spring Dynamic Modules. За последното упражнение ще ви трябва и RDBMS като Apache Derby. По-долу ще намерите повече за настройването на вашата среда за разработка на Spring DM в Eclipse 3.3.

OSGi и пролетната рамка

В момента популярността на OSGi нараства много. Няколко сървъра за приложения са преопаковани, за да се възползват от модулната рамка на OSGi, включително IBM WebSphere Application Server, архитектурата на microService на BEA (mSA) и JOnAS 5, сървър за приложения с отворен код, изграден от основата на OSGi архитектура. JBoss също наскоро обяви работата си върху OSGi-базиран клас за зареждане и намерението си да създаде изпълнение на спецификация на ядрото на OSGi. Може би най-важното е, че наскоро OSGi на контейнера / компонента за изпълнение на компонентите на Eclipse Foundation, Equinox, наскоро бе повишен до статут на проект от най-високо ниво, където ще послужи като основа за новата инициатива за изпълнение на Eclipse.

Още преди OSGi да постигне настоящия си прилив на популярност, се говореше за комбинирането му с Spring. В крайна сметка тази беседа доведе до проекта Spring Dynamic Modules for OSGi Service Platforms. Функционалността на Spring DM може да бъде разделена на два основни компонента: Първо, тя предоставя Spring Frame JARs под формата на пакети OSGi. Както знаете от предишната статия от тази поредица, пакетите OSGi не са нищо друго освен файловете Java Archive (JAR), които съдържат допълнителни записи във META-INF/MANIFEST.MFфайл, който действа като дескриптор за разполагане на пакет OSGi. (Обърнете внимание, че не можете да разположите JAR файл директно, когато използвате OSGi; трябва да го опаковате, използвайки формата на пакета OSGi.)

Второ, Spring DM предлага три специфични за OSGi пакета Spring / JAR:

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

Приложенията, изградени с помощта на Spring DM, са изградени по различен начин от тези, които използват Spring framework. Когато създавате приложение Spring , вие дефинирате информацията за конфигурацията си в един или повече конфигурационни файлове Spring, които са предимно XML файлове. Структурата Spring използва тези конфигурационни файлове за създаване на обект на контекст на приложение при стартиране на приложението. След създаването на контекста на приложението се използва за създаване на пример, конфигуриране, сглобяване и декориране на обекти в приложението.