Već imate svoj softver, ali vam je i dalje potrebna efikasnija metoda omogućavanja vašim tehničkim korisnicima da prošire platformu.
Iako je OSGi dobro poznat većini Java programera, njegova integracija u vaš proizvod može izgledati kao zastrašujući zadatak. Nedostatak jasnoće o preciznom radu OSGi-a dodatno zamućuje put naprijed.
Za razliku od svega s čime bi željeli eksperimentirati, OSGi se više osjeća kao pokušaj plovidbe širokim morem za mnoge Java programere.
Ovaj članak će vas upoznati s proljetnim vodičem za OSGi Felix koristeći jednostavan program i proći kroz, njegove prednosti i druge važne detalje.
Dakle, šta je OSGi?
Kreiranje i distribucija modula i komponenti omogućeno je Java frameworkom poznatim kao OSGi (Open Service Gateway Initiative).
Naglašava enkapsulaciju funkcija i labavo povezivanje, što nudi nekoliko prednosti programerima, uključujući modularnu funkcionalnost koja se lako prenosi između izvornih kodova i testiranja za koje nisu potrebne beskrajne zavisnosti.
Kako radi OSGi?
Sistem dinamičkih komponenti za Javu je definisan skupom specifikacija zvanim OSGi. Ove specifikacije omogućavaju razvojni pristup u kojem se aplikacija gradi iz više dijelova i zatim pakira u pakete.
Ove komponente koriste lokalne i mrežne usluge za komunikaciju. Cilj je učiniti osnovni kod programa što je moguće kompaktnijim. Moguća je velika sprega između ovog koda i nekoliko komponenti.
Višekratni građevinski elementi aplikacije nazivaju se komponentama. Razmislite o funkcijama kao što su košarica za vašu web stranicu za e-trgovinu ili aplikacija za obračun plaća za vaš sistem upravljanja osobljem.
Komponente mogu koristiti OSGi da sakriju svoje implementacije od drugih komponenti i samo im pružaju potrebne podatke putem usluga.
Ovo sprječava komponente da nenamjerno mijenjaju podatke kojima ne bi trebali imati pristup i upravlja ovisnostima.
Sve veze između komponenti u OSGi aplikaciji su napravljene putem usluga u idealnom svijetu. Java paket sadrži API koji je određen za usluge.
Saradnja između pružatelja usluga i kupaca zahtijeva korištenje klasa i/ili interfejsa koji čine API.
Sve OSGi komponente su upakovane zajedno u pakete, od kojih svaki uključuje resurse koji su im potrebni za funkcioniranje. Paketi su sasvim jasni o tome šta im treba od okoline i za šta su sposobni.
prednosti
- OSGi aplikacije imaju pristup eksternim bundle repozitorijumima.
- Okvir omogućava dizajn orijentisan na usluge na nivou modula.
- Omogućuje upravljanje verzijama i zavisnostima paketa aplikacija uz standardizaciju i olakšava integraciju biblioteka trećih strana.
- Aplikacije su prilagodljivije promjenjivim zahtjevima, prenosive su i brže se reinženjering.
- A web aplikacija može se primeniti kao grupa verzionisanih OSGi paketa sa dinamičkim životnim vekom zahvaljujući integraciji okvira sa programskim modelom Java EE.
- Umjesto da se instalira kao biblioteka treće strane kao dio aplikacije, okvir obezbjeđuje deklarativno sklapanje i pojednostavljeno testiranje jedinica Spring Framework-a u standardiziranom obliku koji se pruža kao dio vremena izvršavanja aplikacijskog poslužitelja.
- Za korporativne aplikacije sastavljene od nekoliko verzioniranih paketa sa dinamičkim životnim ciklusima, okvir nudi izolaciju.
- Sadrži integrirano spremište paketa koje može pohraniti zajedničke zajedničke i verzionisane pakete koje koristi nekoliko aplikacija, sprječavajući svaku aplikaciju da implementira zasebnu kopiju svake dijeljene biblioteke.
Početak rada sa OSGi Felix oprugom
Dobivanje resursa
Preuzimanjem najnovije verzije Apache Karafa sa ova stranica, možemo započeti našu OSGi avanturu.
Zasnovan na Apache Felix-u, Apache implementaciji OSGi specifikacije, Apache Karaf pruža platformu za aplikacije zasnovane na OSGi-u.
Karaf pruža razne korisne funkcije na vrhu Felixa koje će nam pomoći da se upoznamo sa OSGi-jem, kao što je interfejs komandne linije koji će nam omogućiti komunikaciju sa platformom.
Ulazna tačka za pakete
Aplikacija mora biti upakovana kao OSGi paket prije nego što se može pokrenuti u OSGi okruženju. Dodatno, mora se specificirati ulazna tačka aplikacije; to nije standardna javna statička void main(String[] args) funkcija.
Dakle, počnimo kreiranjem “Hello World” aplikacija bazirana na OSGi.
Počinjemo uspostavljanjem osnovne zavisnosti od OSGi API-ja:
OSGi runtime će imati pristup zavisnosti, stoga paket ne mora da ga sadrži. Stoga je označeno kao isporučeno.
Sada kreirajmo jednostavnu klasu HelloWorld:
Klase koje deluju kao ulazne tačke za pakete moraju implementirati interfejs BundleActivator koji obezbeđuje OSGi.
Kada se paket koji sadrži ovu klasu pokrene, platforma OSGi poziva funkciju start(). S druge strane, malo prije nego što se paket zaustavi, poziva se funkcija stop().
Ne zaboravimo da svaki bundle može imati samo jedan BundleActivator. Oba načina mogu komunicirati sa OSGi runtime-om koristeći BundleContext objekat koji je dat.
Kreiranje paketa
Učinite pom.xml pravi OSGi paket tako što ćete napraviti potrebne izmjene.
Prvo moramo jasno izraziti da je naš cilj proizvesti snop.
Zatim koristimo maven-bundle-plugin da pakujemo klasu HelloWorld kao OSGi paket, zahvaljujući zajednici Apache Felix:
Vrijednosti OSGi zaglavlja koje želimo uključiti u MANIFEST datoteku bundle-a navedene su u odjeljku uputstava.
Bundle-Activator je zaista ispravno kvalificirano ime BundleActivator rješenja koje će se koristiti za pokretanje i zaustavljanje paketa. Kompatibilan je sa upravo kreiranom klasom.
Iako nije OSGi zaglavlje, zaglavlje Private-Package daje instrukcije dodatku da doda paket u paket, ali ga jednostavno ne učini dostupnim drugim dodacima. Za kreiranje paketa treba koristiti naredbu mvn install.
Instaliranje i pokretanje paketa
Započnimo Karaf pokretanjem ove naredbe:
gdje se “KARAF HOME” odnosi na folder u kojem je Karaf postavljen. Možemo koristiti sljedeću naredbu za instalaciju paketa kada se pojavi prompt Karaf konzole:
Korištenje lokalnog Maven repozitorija je način na koji se Karafu kaže da učita paket.
Vraćajući brojčani ID paketa, Karaf ga ispisuje. Ovaj ID se može razlikovati ovisno o tome koliko je paketa prethodno instalirano. Bundle je sada uspješno instaliran, a komanda 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:
Na konzoli se prikazuje "Zbogom svijete od Jaya."
zaključak
Programeri mogu lako dodati novu funkcionalnost postojećoj web aplikaciji dok je drže bezbednom i izolovanom od ostalih komponenti glavnog programa koristeći OSGi.
Naučili smo o OSGi-u u ovom postu, uključujući kako funkcionira, njegove prednosti i jednostavan program. Nije teško ugraditi OSGi u vlastitu aplikaciju.
Sretno kodiranje!
Ostavite odgovor