Naa na nimo ang imong software, apan kinahanglan nimo ang usa ka labi ka epektibo nga pamaagi aron mahimo ang imong mga teknikal nga tiggamit sa pagpalapad sa plataporma.
Bisan kung ang OSGi ilado sa kadaghanan sa mga developer sa Java, ang pag-integrate niini sa imong produkto ingon og usa ka makahahadlok nga buluhaton. Ang kakulang sa katin-aw bahin sa tukma nga mga buhat sa OSGi labi nga nagsamok sa dalan sa unahan.
Sukwahi sa bisan unsa nga gusto nila nga mag-eksperimento, gibati sa OSGi nga sama sa pagsulay sa paglawig sa lapad nga dagat sa daghang mga developer sa Java.
Kini nga artikulo magpaila kanimo sa OSGi Felix spring tutorial gamit ang usa ka prangka nga programa ug moagi, ang mga bentaha niini, ug uban pang importante nga mga detalye.
Busa unsa ang OSGi?
Ang paghimo ug pag-apod-apod sa mga module ug mga sangkap nahimong posible pinaagi sa Java framework nga nailhan nga OSGi (Open Service Gateway Initiative).
Gipasiugda niini ang function encapsulation ug loose coupling, nga nagtanyag og daghang mga bentaha sa mga developers, lakip ang modular functionality nga daling mabalhin tali sa source codes ug testing nga wala magkinahanglan og walay katapusan nga mga dependency.
Giunsa pagtrabaho ang OSGi?
Ang usa ka dinamikong component system alang sa Java gihubit sa usa ka set sa mga espesipikasyon nga gitawag og OSGi. Kini nga mga specs makahimo sa usa ka pamaagi sa pag-uswag diin ang usa ka aplikasyon gitukod gikan sa daghang mga bahin ug dayon giputos sa mga bundle.
Ang mga lokal ug nakabase sa network nga mga serbisyo gigamit sa kini nga mga sangkap aron makigsulti. Ang paghimo sa kinauyokan nga kodigo sa programa nga ingon ka compact kutob sa mahimo mao ang katuyoan. Ang taas nga pagdugtong tali niini nga code ug daghang mga sangkap posible.
Ang magamit pag-usab nga mga elemento sa pagtukod gitawag nga mga sangkap. Hunahunaa ang bahin sama sa usa ka shopping cart alang sa imong e-commerce nga website o usa ka aplikasyon sa payroll alang sa imong sistema sa pagdumala sa kawani.
Ang mga component mahimong mogamit sa OSGi aron itago ang ilang mga implementasyon gikan sa ubang mga component ug maghatag lamang sa gikinahanglang datos ngadto kanila pinaagi sa mga serbisyo.
Gipugngan niini ang mga sangkap gikan sa dili tinuyo nga pagbag-o sa datos nga dili nila kinahanglan nga ma-access ug magdumala sa mga dependency.
Ang tanan nga koneksyon tali sa mga sangkap sa usa ka aplikasyon sa OSGi gihimo pinaagi sa mga serbisyo sa usa ka sulundon nga kalibutan. Ang Java package adunay sulod nga API nga gipiho alang sa mga serbisyo.
Ang kolaborasyon tali sa mga service provider ug kustomer nanginahanglan sa paggamit sa mga klase ug/o mga interface, nga naglangkob sa API.
Ang tanan nga mga sangkap sa OSGi giputos sa tingub sa mga bundle, nga ang matag usa naglakip sa mga kapanguhaan nga ilang gikinahanglan aron molihok. Ang mga bundle klaro kaayo kung unsa ang ilang gikinahanglan gikan sa palibot ug kung unsa ang ilang mahimo.
Kaayohan
- Ang mga aplikasyon sa OSGi adunay access sa mga external bundle repository.
- Gitugotan sa balangkas ang disenyo nga nakabase sa serbisyo sa lebel sa module.
- Gipaposible niini ang pagdumala sa mga bersyon ug mga dependency sa mga bundle sa aplikasyon dugang sa pag-standardize ug pagpasayon sa pag-integrate sa mga third-party nga librarya.
- Ang mga aplikasyon mas mapasibo sa pagbag-o sa mga panginahanglan, mas madaladala, ug mas dali nga ma-reengineer.
- A aplikasyon sa web mahimong i-deploy ingon usa ka grupo sa mga bersyon nga OSGi bundle nga adunay dinamikong tibuok kinabuhi salamat sa integrasyon sa framework sa Java EE programming model.
- Imbes nga i-install isip third-party nga librarya isip kabahin sa aplikasyon, ang framework naghatag sa declarative assembly ug streamlined unit testing sa Spring Framework sa usa ka standardized nga porma nga gihatag isip kabahin sa application server runtime.
- Alang sa mga aplikasyon sa korporasyon nga gilangkuban sa daghang mga bersyon nga mga bundle nga adunay dinamikong mga siklo sa kinabuhi, ang balangkas nagtanyag pag-inusara.
- Naglangkob kini sa usa ka hiniusa nga tipiganan sa bundle nga makatipig sa gipaambit nga komon ug bersyon nga mga bundle nga gigamit sa daghang mga aplikasyon, nga nagpugong sa matag aplikasyon sa pag-deploy sa usa ka lahi nga kopya sa matag gipaambit nga librarya.
Pagsugod sa OSGi Felix spring
Pagkuha sa mga Kapanguhaan
Pinaagi sa pag-download sa pinakabag-o nga bersyon sa Apache Karaf gikan sa kini nga site, makasugod na ta sa atong OSGi adventure.
Base sa Apache Felix, ang Apache nga pagpatuman sa OSGi specification, ang Apache Karaf naghatag og plataporma alang sa OSGi-based nga mga aplikasyon.
Naghatag ang Karaf og lain-laing mga makatabang nga mga bahin sa ibabaw sa Felix nga makatabang kanato sa pamilyar sa atong kaugalingon sa OSGi, sama sa usa ka command line interface nga makahimo kanato sa pagpakigsulti sa plataporma.
Entry Point Para sa mga Bundle
Ang usa ka aplikasyon kinahanglang maputos isip OSGi bundle sa dili pa kini mapadagan sa usa ka OSGi environment. Dugang pa, ang punto sa pagsulod sa aplikasyon kinahanglan itakda; dili kini ang standard public static void main(String[] args) function.
Busa magsugod kita pinaagi sa paghimo og "Kumusta Kalibutan"aplikasyon base sa OSGi.
Nagsugod kami pinaagi sa pag-establisar sa usa ka sukaranan nga OSGi API dependency:
Ang OSGi runtime adunay access sa dependency, busa ang bundle dili kinahanglan nga adunay sulod niini. Busa, kini gimarkahan ingon nga gihatag.
Karon maghimo ta sa prangka nga klase sa HelloWorld:
Ang mga klase nga nagsilbing entry point para sa mga bundle kinahanglang mag-implementar sa OSGi-provided BundleActivator interface.
Sa diha nga ang bundle nga naglangkob niini nga klase gilansad, ang OSGi platform nagtawag sa start() function. Sa pikas bahin, sa wala pa mahunong ang bundle, ang function stop() gitawag.
Dili nato kalimtan nga ang matag bundle mahimo ra adunay usa ka BundleActivator. Ang duha ka paagi makakomunikar sa OSGi runtime gamit ang butang nga BundleContext nga gihatag.
Paghimo og Bundle
Himoa ang pom.xml nga tinuod nga OSGi bundle pinaagi sa paghimo sa gikinahanglan nga mga kausaban.
Kinahanglan una natong ipahayag sa tin-aw nga ang atong tumong mao ang paghimo og usa ka bugkos.
Dayon, gigamit namo ang maven-bundle-plugin aron i-package ang HelloWorld nga klase isip OSGi bundle, sa maayong kabubut-on sa Apache Felix nga komunidad:
Ang mga bili sa mga ulohan sa OSGi nga gusto namong ilakip sa MANIFEST file sa bundle gipiho sa seksyon sa mga instruksiyon.
Ang Bundle-Activator mao gyud ang tukma nga kwalipikado nga ngalan sa solusyon sa BundleActivator nga gamiton aron masugdan ug ihunong ang bundle. Nahiuyon kini sa bag-o lang nga nahimo nga klase.
Samtang kini dili usa ka OSGi header, ang Private-Package header nagtudlo sa plugin nga idugang ang package sa bundle apan dili lang kini ma-access sa ubang mga plugins. Ang mvn install command kinahanglan gamiton sa paghimo sa bundle.
Pag-instalar ug Pagpadagan sa Bundle
Atong sugdan ang Karaf pinaagi sa pagpadagan niini nga sugo:
diin ang "KARAF HOME" nagtumong sa folder diin gipahimutang ang Karaf. Mahimo natong gamiton ang mosunod nga sugo aron i-install ang bundle kung ang Karaf console prompt makita:
Ang paggamit sa lokal nga repositoryo sa Maven mao kung giunsa gisultihan si Karaf nga i-load ang bundle.
Ibalik ang numeric ID sa bundle, gisulat kini ni Karaf. Mahimong magkalainlain ang kini nga ID depende kung pila ka mga bundle ang na-install kaniadto. Ang bundle malampuson na nga na-install, ug ang sugo sa paglansad niini mao ang mosunod:
Sa higayon nga imong ilunsad ang package, "Hello World ni Jay" nagpakita. Mahimo na namong ihunong ug tangtangon ang bundle gamit ang:
Gipakita sa console ang "Goodbye World ni Jay."
Panapos
Ang mga developers daling makadugang ug bag-ong functionality sa usa ka existing web application samtang gitipigan kini nga luwas ug nahimulag gikan sa ubang mga component sa main program pinaagi sa paggamit sa OSGi.
Nahibal-an namon ang bahin sa OSGi sa kini nga post, lakip kung giunsa kini molihok, mga bentaha niini, ug usa ka prangka nga programa. Dili lisud ang pag-apil sa OSGi sa imong kaugalingon nga aplikasyon.
Malipayon nga coding!
Leave sa usa ka Reply