Masz już swoje oprogramowanie, ale nadal potrzebujesz skuteczniejszej metody umożliwiającej użytkownikom technicznym rozbudowę platformy.
Mimo że OSGi jest dobrze znane większości programistów Java, integracja go z produktem może wydawać się trudnym zadaniem. Brak jasności co do precyzyjnego działania OSGi jeszcze bardziej komplikuje drogę do przodu.
W przeciwieństwie do wszystkiego, z czym chcieliby eksperymentować, OSGi bardziej przypomina próbę przepłynięcia szerokiego morza dla wielu programistów Java.
Ten artykuł wprowadzi Cię do samouczka OSGi Felix Spring przy użyciu prostego programu i omówi jego zalety i inne ważne szczegóły.
Czym więc jest OSGi?
Tworzenie i dystrybucja modułów i komponentów jest możliwe dzięki frameworkowi Java znanemu jako OSGi (Open Service Gateway Initiative).
Kładzie nacisk na enkapsulację funkcji i luźne łączenie, co zapewnia programistom kilka korzyści, w tym modułową funkcjonalność, którą można łatwo przenosić między kodami źródłowymi i testowaniem, które nie wymagają niekończących się zależności.
Jak działa OSGi?
Dynamiczny system komponentów dla Javy jest zdefiniowany przez zestaw specyfikacji o nazwie OSGi. Te specyfikacje umożliwiają podejście programistyczne, w którym aplikacja jest budowana z wielu części, a następnie pakowana w pakiety.
Usługi lokalne i sieciowe są używane przez te składniki do komunikacji. Celem jest uczynienie podstawowego kodu programu tak zwartym, jak to tylko możliwe. Możliwe jest wysokie sprzężenie między tym kodem a kilkoma komponentami.
Elementy konstrukcyjne aplikacji wielokrotnego użytku nazywane są komponentami. Pomyśl o funkcjach, takich jak koszyk w witrynie e-commerce lub aplikacja płacowa w systemie zarządzania personelem.
Komponenty mogą używać OSGi do ukrywania swoich implementacji przed innymi komponentami i dostarczania im tylko niezbędnych danych za pośrednictwem usług.
Zapobiega to niezamierzonym zmianom danych składników, do których nie powinny mieć dostępu, i zarządza zależnościami.
Wszystkie połączenia między komponentami w aplikacji OSGi są realizowane za pośrednictwem usług w idealnym świecie. Pakiet Java zawiera interfejs API określony dla usług.
Współpraca między dostawcami usług a klientami wymaga użycia klas i/lub interfejsów, które składają się na API.
Wszystkie komponenty OSGi są spakowane razem w pakiety, z których każdy zawiera zasoby wymagane do działania. Pakiety dość jasno określają, czego potrzebują od środowiska i do czego są zdolne.
Benefity
- Aplikacje OSGi mają dostęp do zewnętrznych repozytoriów pakietów.
- Framework umożliwia projektowanie zorientowane na usługi na poziomie modułu.
- Umożliwia zarządzanie wersjami i zależnościami pakietów aplikacji, a także standaryzację i ułatwienie integracji bibliotek firm trzecich.
- Aplikacje można łatwiej dostosowywać do zmieniających się wymagań, są bardziej przenośne i szybsze w przeprojektowywaniu.
- A Aplikacja internetowa może być wdrażany jako grupa wersjonowanych pakietów OSGi z dynamicznym czasem życia dzięki integracji frameworka z modelem programowania Java EE.
- Zamiast instalować ją jako bibliotekę innej firmy jako część aplikacji, framework zapewnia deklaratywny montaż i usprawnione testowanie jednostkowe Spring Framework w ustandaryzowanej formie, która jest dostarczana jako część środowiska wykonawczego serwera aplikacji.
- W przypadku aplikacji korporacyjnych składających się z kilku wersjonowanych pakietów z dynamicznym cyklem życia platforma oferuje izolację.
- Zawiera zintegrowane repozytorium pakietów, które może przechowywać wspólne wspólne i wersjonowane pakiety używane przez kilka aplikacji, uniemożliwiając każdej aplikacji wdrażanie oddzielnej kopii każdej udostępnionej biblioteki.
Pierwsze kroki ze sprężyną OSGi Felix
Zdobywanie zasobów
Pobierając najnowszą wersję Apache Karaf z Ta strona, możemy rozpocząć naszą przygodę z OSGi.
Oparty na Apache Felix, implementacji Apache specyfikacji OSGi, Apache Karaf zapewnia platformę dla aplikacji opartych na OSGi.
Oprócz Felixa Karaf oferuje różne przydatne funkcje, które pomogą nam zapoznać się z OSGi, takie jak interfejs wiersza poleceń, który umożliwi nam komunikację z platformą.
Punkt wejścia dla wiązek
Aplikacja musi być spakowana jako pakiet OSGi, zanim będzie mogła zostać uruchomiona w środowisku OSGi. Ponadto należy określić punkt wejścia aplikacji; nie jest to standardowa publiczna, statyczna funkcja void main(String[] args).
Zacznijmy więc od stworzenia „Witaj świecie” aplikacja oparta na OSGi.
Zaczynamy od ustalenia podstawowej zależności OSGi API:
Środowisko wykonawcze OSGi będzie miało dostęp do zależności, dlatego pakiet nie musi jej zawierać. Dlatego jest oznaczony jako dostarczony.
Teraz stwórzmy prostą klasę HelloWorld:
Klasy, które działają jako punkty wejścia dla pakunków, muszą implementować interfejs BundleActivator dostarczony przez OSGi.
Po uruchomieniu pakietu zawierającego tę klasę platforma OSGi wywołuje funkcję start(). Z drugiej strony, na krótko przed zatrzymaniem pakietu, wywoływana jest funkcja stop().
Nie zapominajmy, że każdy pakiet może mieć tylko jeden pakiet BundleActivator. Oba sposoby mogą komunikować się ze środowiskiem wykonawczym OSGi za pomocą podanego obiektu BundleContext.
Tworzenie pakietu
Zmień plik pom.xml w prawdziwy pakiet OSGi, wprowadzając niezbędne zmiany.
Najpierw musimy jasno wyrazić, że naszym celem jest wyprodukowanie wiązki.
Następnie używamy wtyczki maven-bundle, aby spakować klasę HelloWorld jako pakiet OSGi, dzięki uprzejmości społeczności Apache Felix:
Wartości nagłówków OSGi, które chcemy umieścić w pliku MANIFESTU paczki, są określone w sekcji instrukcji.
Bundle-Activator to rzeczywiście odpowiednio kwalifikowana nazwa rozwiązania BundleActivator, która będzie używana do uruchamiania i zatrzymywania pakietu. Jest kompatybilny z właśnie utworzoną klasą.
Chociaż nie jest to nagłówek OSGi, nagłówek Private-Package instruuje wtyczkę, aby dodała pakiet do pakietu, ale po prostu nie udostępniała go innym wtyczkom. Do utworzenia pakietu należy użyć polecenia mvn install.
Instalowanie i uruchamianie pakietu
Zacznijmy Karaf od uruchomienia tego polecenia:
gdzie „KARAF HOME” odnosi się do folderu, w którym skonfigurowano Karaf. Możemy użyć następującego polecenia, aby zainstalować pakiet, gdy pojawi się monit konsoli Karaf:
Korzystanie z lokalnego repozytorium Maven jest sposobem, w jaki Karaf ma załadować pakiet.
Zwracając numeryczny identyfikator paczki, Karaf zapisuje go. Ten identyfikator może się różnić w zależności od tego, ile pakietów zostało wcześniej zainstalowanych. Pakiet został pomyślnie zainstalowany, a polecenie jego uruchomienia wygląda następująco:
W momencie uruchomienia pakietu wyświetla się „Hello World by Jay”. Możemy teraz zatrzymać i usunąć pakiet za pomocą:
Konsola wyświetla „Goodbye World by Jay”.
Wnioski
Deweloperzy mogą łatwo dodać nowe funkcje do istniejącej aplikacji internetowej, jednocześnie zachowując jej bezpieczeństwo i izolację od innych komponentów głównego programu za pomocą OSGi.
W tym poście dowiedzieliśmy się o OSGi, w tym o jego działaniu, jego zaletach i prostym programie. Włączenie OSGi do własnej aplikacji nie jest trudne.
Miłego kodowania!
Dodaj komentarz