Već imate svoj softver, ali još uvijek vam je potrebna učinkovitija metoda za omogućavanje tehničkim korisnicima da prošire platformu.
Iako je OSGi dobro poznat većini Java programera, njegovo integriranje u vaš proizvod može izgledati kao zastrašujući zadatak. Nedostatak jasnoće o preciznom funkcioniranju OSGi dodatno otežava put naprijed.
Za razliku od svega s čime bi željeli eksperimentirati, OSGi se mnogim Java programerima više čini poput pokušaja plovidbe širokim morem.
Ovaj članak će vas upoznati s OSGi Felix proljetnim vodičem pomoću jednostavnog programa i proći kroz njegove prednosti i druge važne detalje.
Dakle, što je OSGi?
Stvaranje i distribuciju modula i komponenti omogućeno je Java okvirom poznatim kao OSGi (Open Service Gateway Initiative).
Naglašava enkapsulaciju funkcija i labavu povezanost, što nudi nekoliko prednosti programerima, uključujući modularnu funkcionalnost koja se lako prenosi između izvornih kodova i testiranje koje ne treba beskrajne ovisnosti.
Kako radi OSGi?
Sustav dinamičkih komponenti za Javu definiran je skupom specifikacija nazvanih OSGi. Ove specifikacije omogućuju razvojni pristup u kojem je aplikacija izgrađena od više dijelova, a zatim pakirana u pakete.
Ove komponente za komunikaciju koriste lokalne i mrežne usluge. Cilj je učiniti osnovni kod programa što je moguće kompaktnijim. Moguća je velika veza između ovog koda i nekoliko komponenti.
Građevinski elementi aplikacije koji se mogu ponovno koristiti nazivaju se komponente. Razmislite o značajkama kao što su košarica za kupnju za vašu web stranicu e-trgovine ili aplikacija za obračun plaća za vaš sustav upravljanja osobljem.
Komponente mogu koristiti OSGi kako bi sakrile svoje implementacije od drugih komponenti i samo im pružile potrebne podatke putem usluga.
To sprječava komponente da nenamjerno mijenjaju podatke kojima ne bi trebale imati pristup i upravlja ovisnostima.
Sve veze između komponenti u OSGi aplikaciji ostvaruju se putem usluga u idealnom svijetu. Java paket sadrži API koji je naveden za usluge.
Suradnja između pružatelja usluga i kupaca zahtijeva korištenje klasa i/ili sučelja koja čine API.
Sve OSGi komponente pakirane su zajedno u pakete, od kojih svaki uključuje resurse koji su im potrebni za funkcioniranje. Snopovi su prilično jasni što trebaju od okoline i za što su sposobni.
Prednosti
- OSGi aplikacije imaju pristup vanjskim spremištima paketa.
- Okvir omogućuje dizajn orijentiran na usluge na razini modula.
- Omogućuje upravljanje verzijama i ovisnostima paketa aplikacija uz standardizaciju i olakšavanje integracije biblioteka trećih strana.
- Aplikacije su prilagodljivije promjenjivim zahtjevima, prenosivije i brže se reinžinjeriraju.
- A web aplikacija može se implementirati kao grupa verzioniranih OSGi paketa s dinamičkim vijekom trajanja zahvaljujući integraciji okvira s modelom programiranja Java EE.
- Umjesto da se instalira kao biblioteka treće strane kao dio aplikacije, okvir pruža deklarativnu montažu i pojednostavljeno jedinično testiranje Spring okvira u standardiziranom obliku koji se pruža kao dio vremena izvođenja aplikacijskog poslužitelja.
- Za korporativne aplikacije sastavljene od nekoliko verziranih paketa s dinamičkim životnim ciklusima, okvir nudi izolaciju.
- Sadrži integrirano spremište paketa koje može pohraniti zajedničke zajedničke i verzionirane pakete koje koristi nekoliko aplikacija, sprječavajući svaku aplikaciju da postavi zasebnu kopiju svake dijeljene biblioteke.
Početak rada s OSGi Felix spring
Dobivanje resursa
Preuzimanjem najnovije verzije Apache Karafa s ovaj site, možemo započeti našu OSGi avanturu.
Temeljen na Apache Felixu, Apache implementaciji OSGi specifikacije, Apache Karaf pruža platformu za aplikacije temeljene na OSGi.
Karaf nudi razne korisne značajke povrh Felixa koje će nam pomoći u upoznavanju s OSGi-jem, poput sučelja naredbenog retka koje će nam omogućiti komunikaciju s platformom.
Ulazna točka za pakete
Aplikacija mora biti zapakirana kao OSGi paket prije nego što se može pokrenuti u OSGi okruženju. Dodatno, mora biti navedena ulazna točka aplikacije; to nije standardna javna static void main(String[] args) funkcija.
Pa počnimo stvaranjem "Pozdrav svijete” aplikacija temeljena na OSGi.
Počinjemo uspostavljanjem osnovne OSGi API ovisnosti:
OSGi runtime će imati pristup ovisnosti, stoga ga paket ne mora sadržavati. Stoga je označeno kao isporučeno.
Kreirajmo sada jednostavnu klasu HelloWorld:
Klase koje djeluju kao ulazne točke za pakete moraju implementirati sučelje BundleActivator koje daje OSGi.
Kada se paket koji sadrži ovu klasu pokrene, OSGi platforma poziva funkciju start(). S druge strane, kratko prije nego što se paket zaustavi, poziva se funkcija stop().
Ne zaboravimo da svaki paket može imati samo jedan BundleActivator. Oba načina mogu komunicirati s OSGi runtimeom pomoću danog objekta BundleContext.
Stvaranje paketa
Učinite pom.xml pravim OSGi paketom uvođenjem potrebnih promjena.
Prvo moramo jasno izraziti da je naš cilj proizvesti paket.
Zatim koristimo dodatak maven-bundle-plugin za pakiranje klase HelloWorld kao OSGi paketa, zahvaljujući zajednici Apache Felix:
Vrijednosti OSGi zaglavlja koje želimo uključiti u MANIFEST datoteku paketa navedene su u odjeljku s uputama.
Bundle-Activator doista je pravilno kvalificirani naziv BundleActivator rješenja koje će se koristiti za pokretanje i zaustavljanje paketa. Kompatibilan je s upravo stvorenom klasom.
Iako nije OSGi zaglavlje, zaglavlje Private-Package upućuje dodatak da doda paket u paket, ali ga samo ne čini dostupnim drugim dodacima. Naredba mvn install trebala bi se koristiti za stvaranje paketa.
Instaliranje i pokretanje paketa
Započnimo Karaf pokretanjem ove naredbe:
gdje se "KARAF HOME" odnosi na mapu u kojoj je Karaf postavljen. Možemo upotrijebiti sljedeću naredbu za instaliranje paketa kada se pojavi upit Karaf konzole:
Korištenje lokalnog Maven repozitorija je način na koji se Karafu kaže da učita paket.
Vraćajući numerički ID svežnja, Karaf ga ispisuje. Ovaj ID može se razlikovati ovisno o tome koliko je paketa prethodno instalirano. Paket je sada uspješno instaliran, a naredba za njegovo pokretanje je sljedeća:
U trenutku kada pokrenete paket, prikazuje se "Hello World by Jay". Sada možemo zaustaviti i ukloniti paket koristeći:
Konzola prikazuje "Goodbye World by Jay."
Zaključak
Razvojni programeri mogu jednostavno dodati novu funkcionalnost postojećoj web aplikaciji dok je drže sigurnom i izoliranom od ostalih komponenti glavnog programa koristeći OSGi.
U ovom smo postu naučili o OSGi-ju, uključujući kako funkcionira, njegove prednosti i jednostavan program. Nije teško ugraditi OSGi u vlastitu aplikaciju.
Sretno kodiranje!
Ostavi odgovor