У вас ужо ёсць праграмнае забеспячэнне, але вам усё яшчэ патрэбен больш эфектыўны метад, які дазволіць вашым тэхнічным карыстальнікам пашыраць платформу.
Нягледзячы на тое, што OSGi добра вядомы большасці распрацоўшчыкаў Java, інтэграцыя яго ў ваш прадукт можа здацца складанай задачай. Адсутнасць яснасці адносна дакладнай працы OSGi яшчэ больш ускладняе дарогу наперад.
У адрозненне ад усяго, з чым яны хацелі б паэксперыментаваць, для многіх распрацоўшчыкаў Java OSGi больш нагадвае спробу плыць па шырокім моры.
Гэты артыкул пазнаёміць вас з падручнікам OSGi Felix Spring з выкарыстаннем простай праграмы, яе перавагамі і іншымі важнымі дэталямі.
Такім чынам, што такое OSGi?
Стварэнне і распаўсюджванне модуляў і кампанентаў стала магчымым дзякуючы ініцыятыве Java, вядомай як OSGi (Open Service Gateway Initiative).
У ім падкрэсліваецца інкапсуляцыя функцый і слабая сувязь, што дае некалькі пераваг распрацоўшчыкам, у тым ліку модульную функцыянальнасць, якую можна лёгка пераносіць паміж зыходнымі кодамі, і тэставанне, якое не мае патрэбы ў бясконцых залежнасцях.
Як працуе OSGi?
Сістэма дынамічных кампанентаў для Java вызначаецца наборам спецыфікацый, якія называюцца OSGi. Гэтыя спецыфікацыі дазваляюць выкарыстоўваць падыход да распрацоўкі, пры якім прыкладанне будуецца з шэрагу частак, а затым пакуецца ў пакеты.
Лакальныя і сеткавыя службы выкарыстоўваюцца гэтымі кампанентамі для сувязі. Мэта - зрабіць асноўны код праграмы максімальна кампактным. Магчымая высокая сувязь паміж гэтым кодам і некалькімі кампанентамі.
Будаўнічыя элементы прыкладання, якія можна шматразова выкарыстоўваць, называюцца кампанентамі. Падумайце аб такіх функцыях, як кошык для пакупак для вашага вэб-сайта электроннай камерцыі або дадатак для разліку заработнай платы для вашай сістэмы кіравання персаналам.
Кампаненты могуць выкарыстоўваць OSGi, каб схаваць свае рэалізацыі ад іншых кампанентаў і прадастаўляць ім толькі неабходныя даныя праз службы.
Гэта прадухіляе кампаненты ад ненаўмыснага змены даных, да якіх яны не павінны мець доступу, і кіруе залежнасцямі.
Усе сувязі паміж кампанентамі ў дадатку OSGi ажыццяўляюцца праз сэрвісы ў ідэальным свеце. Пакет Java змяшчае API, вызначаны для паслуг.
Супрацоўніцтва паміж пастаўшчыкамі паслуг і кліентамі патрабуе выкарыстання класаў і/або інтэрфейсаў, якія складаюць API.
Усе кампаненты OSGi спакаваныя разам у пакеты, кожны з якіх уключае рэсурсы, неабходныя для функцыянавання. Звязкі цалкам ясна разумеюць, што ім трэба ад навакольнага асяроддзя і на што яны здольныя.
льготы
- Прыкладанні OSGi маюць доступ да знешніх сховішчаў пакетаў.
- Структура дазваляе сэрвіс-арыентаванае праектаванне на ўзроўні модуля.
- Гэта дае магчымасць кіраваць версіямі і залежнасцямі пакетаў прыкладанняў у дадатак да стандартызацыі і палягчэння інтэграцыі старонніх бібліятэк.
- Прыкладанні больш адаптуюцца да зменлівых патрабаванняў, больш партатыўныя і хутчэй рэінжынірыруюцца.
- A вэб-прыкладанне можа быць разгорнута як група версійных пакетаў OSGi з дынамічным часам жыцця дзякуючы інтэграцыі фрэймворка з мадэллю праграмавання Java EE.
- Замест таго, каб усталёўвацца ў якасці старонняй бібліятэкі як часткі прыкладання, структура забяспечвае дэкларатыўную зборку і аптымізаванае тэставанне блокаў Spring Framework у стандартызаванай форме, якая прадастаўляецца як частка асяроддзя выканання сервера прыкладанняў.
- Для карпаратыўных прыкладанняў, якія складаюцца з некалькіх пакетаў версій з дынамічнымі жыццёвымі цыкламі, структура прапануе ізаляцыю.
- Ён утрымлівае інтэграванае сховішча пакетаў, якое можа захоўваць агульныя агульныя пакеты і пакеты з версіямі, якія выкарыстоўваюцца некалькімі праграмамі, не дазваляючы кожнаму прыкладанню разгортваць асобную копію кожнай агульнай бібліятэкі.
Пачатак працы з OSGi Felix spring
Атрыманне рэсурсаў
Спампаваўшы апошнюю версію Apache Karaf з гэты сайт, мы можам пачаць наша прыгода OSGi.
Заснаваны на Apache Felix, рэалізацыі Apache спецыфікацыі OSGi, Apache Karaf забяспечвае платформу для прыкладанняў на аснове OSGi.
Karaf забяспечвае розныя карысныя функцыі па-над Felix, якія дапамогуць нам азнаёміцца з OSGi, такія як інтэрфейс каманднага радка, які дазволіць нам мець зносіны з платформай.
Кропка ўваходу для набораў
Прыкладанне павінна быць упакавана ў камплект OSGi, перш чым яго можна будзе запускаць у асяроддзі OSGi. Дадаткова павінна быць указана кропка ўваходу прыкладання; гэта не стандартная функцыя public static void main(String[] args).
Такім чынам, давайце пачнем са стварэння "Прывітанне свет»прыкладанне на базе OSGi.
Мы пачынаем з усталявання базавай залежнасці OSGi API:
Асяроддзе выканання OSGi будзе мець доступ да залежнасці, таму пакет не павінен утрымліваць яго. Такім чынам, ён пазначаны як пастаўлены.
Зараз давайце створым просты клас HelloWorld:
Класы, якія дзейнічаюць як кропкі ўваходу для пакетаў, павінны рэалізаваць інтэрфейс BundleActivator, які прадстаўляецца OSGi.
Пры запуску пакета, які змяшчае гэты клас, платформа OSGi выклікае функцыю start(). З іншага боку, незадоўга да таго, як пакет будзе спынены, выклікаецца функцыя stop().
Не будзем забываць, што кожны набор можа мець толькі адзін BundleActivator. Абодва спосабы могуць мець зносіны з асяроддзем выканання OSGi з дапамогай зададзенага аб'екта BundleContext.
Стварэнне пакета
Зрабіце pom.xml сапраўдным пакетам OSGi, унёсшы неабходныя змены.
Спачатку мы павінны выразна сказаць, што наша мэта складаецца ў тым, каб вырабіць пакет.
Затым мы выкарыстоўваем убудова maven-bundle-plugin для спакавання класа HelloWorld у выглядзе пакета OSGi, прадастаўленага супольнасцю Apache Felix:
Значэнні загалоўкаў OSGi, якія мы хочам уключыць у файл MANIFEST пакета, указаны ў раздзеле інструкцый.
Bundle-Activator - гэта сапраўды дакладная назва рашэння BundleActivator, якое будзе выкарыстоўвацца для запуску і спынення пакета. Ён сумяшчальны з толькі што створаным класам.
Нягледзячы на тое, што гэта не загаловак OSGi, загаловак Private-Package загадвае ўбудове дадаць пакет у пакет, але не робіць яго даступным для іншых убудоў. Для стварэння пакета трэба выкарыстоўваць каманду mvn install.
Устаноўка і запуск пакета
Давайце пачнем Karaf з выканання гэтай каманды:
дзе «KARAF HOME» адносіцца да папкі, у якой быў наладжаны Karaf. Мы можам выкарыстаць наступную каманду, каб усталяваць камплект, калі з'явіцца запыт кансолі Karaf:
Выкарыстанне лакальнага рэпазітара Maven - вось як Karaf загадваюць загрузіць пакет.
Вяртаючы лічбавы ідэнтыфікатар пакета, Караф выпісвае яго. Гэты ідэнтыфікатар можа адрознівацца ў залежнасці ад таго, колькі набораў было ўсталявана раней. Пакет быў паспяхова ўсталяваны, і каманда для яго запуску выглядае наступным чынам:
У той момант, калі вы запускаеце пакет, адлюстроўваецца «Hello World by Jay». Цяпер мы можам спыніць і выдаліць пакет з дапамогай:
Кансоль адлюстроўвае «Goodbye World by Jay».
заключэнне
Распрацоўшчыкі могуць лёгка дадаваць новую функцыянальнасць у існуючае вэб-прыкладанне, захоўваючы пры гэтым яго бяспеку і ізаляцыю ад іншых кампанентаў асноўнай праграмы з дапамогай OSGi.
У гэтай публікацыі мы даведаліся пра OSGi, у тым ліку пра тое, як ён працуе, яго перавагі і простую праграму. Нескладана ўключыць OSGi у ваша ўласнае прыкладанне.
Шчаслівага кадавання!
Пакінуць каментар