JavaEE + OSGi

Embed Size (px)

Citation preview

JavaEE + OSGi

wielomoduowe aplikacje webowe

[email protected]

JavaEE + OSGi

AGENDA

1. Case study

2. Idea modularyzacji

3. Modularyzacja w JavaEE

4. Wprowadzenie w OSGi

5. Wsppraca JavaEE + OSGi

6. Prezentacja platformy webowej osgi

JavaEE + OSGi

Case Study

JavaEE + OSGi

Case study

JVMJEE Server Aplikacja Webowaale po pewnym czasie ...

100 tys. linii kodu

2 zespoy programistw

po duszym czasie

500 tys. linii kodu

4 zespoy programistwJak szybko zbudowa system wsparcia sprzeday dla nowego banku?

Nic trudnego, napiszemy aplikacj webow Java EE !

Zalety:standardowa architektura,pena wsppraca kodu,dewelopowanie in-place,atwe testowanie, spjny interfejs uytkownika,klarowne zarzdzanie sesjdue wsparcie ze strony IDE

Zrobione !

w naszym przypadku:

> 1 mln linii kodu> 10 tys. klas> 1500 klas akcji struts> 2300 cieek do akcji> 1000 stron JSP> 8 zespow > 60 osb

jar-helldugie kompilacje, przecienie zasobw IDEproblemy przy dewelopowaniu wielozespoowym (merge)ograniczona skalowalno (do ~100 tys. linii kodu)trudnoci przy wariantowaniu aplikacjikopoty z izolacj zagadnie (SoC)

JavaEE + OSGi

Co z tym teraz zrobi ?

Case study

JVMJEE Server

?Podzielmy aplikacj na moduy !Co to jednak znaczy podzieli aplikacjna moduy?

JavaEE + OSGi

Idea modularyzacji

JavaEE + OSGi

Modu

miara,

powtarzalny wymiar,

bazowy element caoci

Modularyzacja

koncepcja budowania zoonych systemw przez dzielenie ich na wewntrznie spjne moduy, midzy ktrymi wymiana informacji jest znacznie rzadsza ni wewntrz nich1

sposb konstruowania umoliwiajcy atwe zestawianie wikszych jednostek ze standaryzowanych moduw1

1. Sownik Encyklopedyczny - Informatyka Wydawnictwa Europa. Autor - Zdzisaw Poski. ISBN 83-87977-16-0. Rok wydania 1999.

Modularyzacja

?

?

JavaEE + OSGi

Koncepcja modularyzacji rozwina si w poowie XIX wieku w manufakturach zbrojeniowych, kadc podwaliny rozwojowi masowej produkcji przemysowej opartej na zunifikowanych i wymiennych podzespoach, produkowanych i zespalanych oddzielnie.

W informatyce modularyzacja jest raczej luno zdefiniowanym pojciem.

Okrela si nim rne techniki programistyczne majce suy:separacji zagadnie (SoC)

reuywalnoci kodu

generalizacji rozwiza

izolacji szczegw implementacji

kreowaniu interfejsw i komponentw

Modularyzacja

Przykadowe obszary wykorzystania modularyzacji:

konstrukcja maszyn,

linie produkcyjne,

urzdzenia sieciowe,

podzespoy elektroniczne,

meble kuchenne, biurowe i magazynowe,

systemy budowlane i instalacyjne,

opakowania i kontenery

kreatywne zabawki (lego),

projektowanie architektoniczne i przestrzenne,

software

JavaEE + OSGi

Modularyzacja

Programujc, dzielimy kod na uyteczne moduy:

metoda / funkcja

klasa / skrypt

pakiet

biblioteka

aplikacja / usuga

JavaEE + OSGi

Modularyzacja

Jakie s podane cechy dobrego moduu?

czytelnie okrelona funkcja/zagadnienie/odpowiedzialno

jawne i jak najmniejsze zalenoci od innych moduw

samodzielno/enkapsulacja/izolacja implementacji

zdolno do wsppracy z innymi moduami

standardowe punkty i metody czenia (interfejsy)

wymienno

autokonfiguracja

JavaEE + OSGi

Modularyzacja

JavaEE + OSGi

Modularyzacja w JavaEE

Przegld rozwizamodularyzacji aplikacji webowej

JavaEE + OSGi

Przegld technik

Rozwamy 5 propozycji modularyzacji:

1. Statyczna kompozycja standardowej aplikacji webowej z moduw na etapie budowania (maven overlays, ant build).

2. Dynamiczna kompozycja aplikacji webowej z moduw (fragmentw) w trakcie inicjalizacji (od JEE6, Servlet 3.0).

3. Moduy jako odrbne aplikacje webowe na wsplnym serwerze.

4. Moduy jako odrbne aplikacje webowe rozproszone na wielu serwerach.

5. Aplikacja webowa ze zintegrowan platform OSGi, moduy aplikacyjne jako paczki osgi.

JavaEE + OSGi

Przegld technik

Kryteria oceny rozwiza1. modularno (stopie separacji / wsppracy)2. skalowalno (dewelopowanie wielozespoowe, wersjonowanie)3. czytelno rozwizania, standaryzacja4. brak duplikacji kodu / zasobw / konfiguracji5. spjno interfejsu uytkownika6. klarowne zarzdzanie sesj uytkownika7. likwidacja problemw z jar-hell8. wydajna komunikacja moduw9. atwo wariantowania aplikacji10. szybkie dewelopowanie in-place11. wygodne rodowisko testowe

JavaEE + OSGi

Przegld technik

JVMJEE Server 1. Statyczna kompozycja standardowej aplikacji webowej z moduw na etapie budowania (maven overlays, ant build).

1234576

Zalety:

moliwo osobnego dewelopowania i wersjonowania moduw przez rone zespoy programistw uatwione tworzenie wariantw aplikacji dla rnych celw i rodowisk

znaczna redukcja rozmiaru projektw w IDE

Wady:

uciliwa dodatkowa faza czenia moduw

brak moliwoci dewelopowania in-place

nadal problemy z jar-hell

brak mechanizmw autokonfiguracji

JavaEE + OSGi

Przegld technik

JVMJEE Server 2. Dynamiczna kompozycja aplikacji webowej z moduw (fragmentw) w trakcie inicjalizacji (tylko JEE6, Servlet 3.0).

1234576

Zalety:

rozwizanie standardowe

wsparcie ze strony IDE

czciowa autokonfiguracja aplikacji

wydajna komunikacja wewntrz pojedynczej JVM

spjny interfejs uytkownika

Wady:

autokonfiguracja tylko dla standardowych zasobw

brak separacji moduw

nadal jar-hell

wymagany serwer certyfikowany dla JEE6

brak dewelopowania w trybie in-place

JavaEE + OSGi

Przegld technik

JVMJEE Server 3. Moduy jako odrbne aplikacje webowe na wsplnym serwerze.

Integracja przez baz danych, rmi/corba lub http/soap.

12345

Zalety:

wysoka samodzielno funkcjonalna moduw,

wysoka wydajno komunikacji wewntrz pojedynczej JVM,

likwidacja jar-hell

dewelopowanie in-place

Wady:

utrudnione testowanie

cakowita separacja przestrzeni klas, zasobw i konfiguracji

dua duplikacja kodu wsplnego (bibliotek)

b. grube ziarno separacji

problemy z utrzymaniem spjnoci stanu UI

JavaEE + OSGi

Przegld technik

4. Moduy jako odrbne aplikacje webowe rozproszone na wielu serwerach. Integracja przez baz danych, rmi/corba lub http/soap.

JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server JVMJEE Server 1JVMJEE Server

Zalety:

wysoka samodzielno funkcjonalna moduw,

dewelopowanie in-place

due moliwoci tuningu architektonicznego i wydajnociowego

Moliwo balansowania komunikacji i wykorzystania narzdzi typu ESB

Wady:

wysoki koszt komunikacji zdalnej

skomplikowane testowanie

cakowita izolacja klas i zasobw moduw

dua duplikacja kodu wsplnego

problemy z utrzymaniem spjnoci stanu UI

Platforma OSGiJavaEE + OSGi

Przegld technik

JVMJEE Server 5. Aplikacja webowa ze zintegrowan platform OSGi, moduy aplikacyjne jako paczki osgi.

12458673

Zalety:

integracja/izolacja kodu/zasobw/usug wg potrzeb,

dynamiczna konfiguracja,

likwidacja jar-hell,

dewelopowanie in-place,

lazy-loading moduw

Wady:

problemy z dziaaniem platformy OSGi w rodowisku serwera JavaEE,

stroma krzywa uczenia OSGi,

saba standaryzacja dla takich rozwiza w przemyle IT

Wariant modularyzacji1234567891011

0 (monolit)-+-+++++-+-

2 (kompozycja statyczna)+++/-++-++-++

2 (kompozycja dynamiczna)++/-+/-++-++-++

3 (aplikacje na wsplnym serwerze)++/-+/---+/--+/-+/-++

4 (aplikacje rozproszone na wielu serwerach)+-+--+/---+/--+

5 (Platforma OSGi)++/-+++++++++

JavaEE + OSGi

Przegld technik

modularno

czytelno

skalowalno

brak duplikacji

spjno stanu UI

in-place

atwe testowanie

wsplna sesja http

likwidacja jar-hell

wydajna komunik.

wariantowanie

JavaEE + OSGi

Wprowadzenie w OSGi

(wczeniej Open Services Gateway Initiative)

Konsorcjum wielu firm rozwijajce zbir standardw, zwanych Specyfikacjami OSGi

Pierwsze specyfikacje powstay w 1998 dla potrzeb oprogramowania inteligentnych budynkw.

Misja: Rozwj standardu uniwersalnego middleware silnie zorientowanego na wymian usug przez dynamicznie zarzdzane komponenty (SOA-in-VM).

JavaEE + OSGi

Wprowadzenie w OSGi

OSGi - The Dynamic Module System for Java

http://www.osgi.org

JavaEE + OSGi

Wprowadzenie w OSGi

OSGi - The Dynamic Module System for Java

Obszary zastosowaSystemy informatyczne dla przedsibiorstwTelekomunikacjaUrzdzenia mobilneInteligentne budynkiSprzt AGD i RTV

Certfikowane implementacje platformy OSGi:

Specyfikacja Core R4 V4.2:

1. Makewave Knopflerfish Pro 3 (www.makewave.com) 2. ProSyst Software mBedded Server 7 (www.prosyst.com) 3. Hitachi Solutions SuperJ Engine Framework V4 (www.hitachisoft.jp) 4. Apache Felix Framework 3.0.0 (http://felix.apache.org)

Specyfikacja Core R4:

5. Eclipse Equinox 3.2 (www.eclipse.org/equinox/) 6. Samsung OSGi R4 Solution (www.samsung.com) 7. KT OSGi Service Platform (KOSP) 1.0 (http://www.kt.co.kr/)

COMPENDIUM SpecificationENTERPRISE Specification

JavaEE + OSGi

Wprowadzenie w OSGi

Przykadowe aplikacje wykorzystujce OSGi

Eclipse IDENetBeans IDE

GlassFish ServerOracle Weblogic ServerIBM WebSphereJOnASJBoss WebserverSpringSource dm Server

IBM TivoliAtlassian ConfluenceApache SynapseApache Tuscany

Kluczowe cechy platformy OSGi- przeznaczona dla rodowiska Java (rne profile)- wykorzystuje tylko standardowe mechanizmy JDK (1.4)- minimalistyczna specyfikacja i api (~30 klas i interfesjw)- elastyczna: moduy mog si zarwno w peni angaowa w ycie platformy lub te zupenie nic o niej nie wiedzie

CORE SpecificationOSGi - The Dynamic Module System for Java

JavaEE + OSGi

Wprowadzenie w OSGi

Framework - platforma, zgodna ze specyfikacj OSGi Core, czy moduy, zarzdza moduami, udostpnia globalne repozytorium i api wymiany usug, egzekwuje reguy bezpieczestwa.

Bundle - elementarny modu, paczka kodu i zasobw z dokumentem konfiguracyjnym opisujcym zasady wymiany kodu z innymi moduami (MANIFEST.MF), posiada dostp do API platformy, moe wpywa na cykl ycia i zachowanie innych moduw, podlega reguom bezpieczestwa, wymienia usugi z innymi moduami za porednictwem API platformy lub dedykowanych mechanizmw (DS, Spring DM, iPOJO).

Service - usuga, obiekt jzyka Java wymieniany midzy moduami poprzez globalne repozytorium na podstawie nazwy interfejsu/klasy i dodatkowych atrybutw, usugi rozgaszane s i dostarczane w sposb dynamiczny.

META-INF/MANIFEST.MF - plik moduu zawierajcy istotne nagwki konfiguracyjne odczytywane przez platform oraz dostpne do wiadomoci innych moduw.

Wiring - proces przyswajania moduu do platformy polegajcy na analizie dostpnoci wymaganych i oferowanych przez modu zalenoci (pakietw kodu)

BundleContext - podstawowy interfejs platformy OSGi przekazywany moduom w celu wsppracy, umoliwia: pozyskiwanie danych o moduach i usugach, pobieranie usug, zarzdzanie platform i moduami, dostp do kodu i zasobw innych moduw w ramach regu bezpieczestwa.

Tracker - obserwator moduw (BundleTracker) lub usug (ServiceTracker), przydatne klasy API platformy uatwiajce wspprac moduw z platform, umoliwiaj atw implementacj zaawansowanych mechanizmw integracyjnych.

Uyteczny sowniczek OSGi:

Architektura platformy OSGi

JavaEE + OSGi

Wprowadzenie w OSGi

OSGi - The Dynamic Module System for Java

Wsparcie dla rnych rodowisk i profili JDK

Moduy (bundles) wsppracuj ze sob wymieniajc kod i usugi

Zarzdzanie dynamicznym cyklem ycia moduw(instalowanie, startowanie, zatrzymywanie, usuwanie)

Globalne repozytorium i API do wymiany usug midzy moduamiZarzdzanie wymian kodu i zasobw midzy moduamiWymaga jedynie standardowegorodowiska JavaZintegrowana architekturauprawnie i zabezpieczebazujca na Java Security

JavaEE + OSGi

Wprowadzenie w OSGi

OSGi - The Dynamic Module System for Java

3 gwne funkcje platformy OSGi

Nadzorowanie wymiany kodu

Zarzdzanie cyklem ycia moduw

Repozytorium usug

JavaEE + OSGi

Wprowadzenie w OSGi

1. Wymiana kodu przez moduy

privatepublic

privatepublic

Kady modu posiada wasn wewntrzn ciek klas, na ktrej mog znajdowa si zarwno katalogi, jak i archiwa JAR.

Framework konstruuje dla kadego moduu osobny ClassLoader.

Kady modu posiada wasn przestrze klas, w ktrej mog znajdowa si klasy z tego moduu oraz z innych moduw.

Framework kieruje si deklaracjami zawartymi w nagwkach Import-Package i Export-Package w pliku MANIFEST.MF

Elementarn jednostk wymiany kodu jest pakiet.

Importy i eksporty pakietw s wersjonowane.

Framework dba o to, aby przestrze klas kadego z moduw bya moliwie spjna, tj. zawieraa tylko jedn wersj danej klasy.

Przestrzenie rnych moduw mog zawiera rne wersje tych samych klas, nie mog jednak wtedy wymienia obiektw tych klas, bezporednio lub porednio (przez inne klasy).

JavaEE + OSGi

Wprowadzenie w OSGi

1. Wymiana kodu przez moduy, c.d.

JavaEE + OSGi

Wprowadzenie w OSGi

2. Zarzdzanie cyklem ycia moduw

InstalledResolvedActiveStoppingStarting

Bundles

JavaEE + OSGi

Wprowadzenie w OSGi

3. Repozytorium usug

Framework OSGiRepozytorium usugAPIDeclarativeServicesSpring DM(Dynamic Modules)Apache iPOJO

JavaEE + OSGi

Wprowadzenie w OSGi

Standardowe dodatkowe usugi platformy OSGi (opcjonalne)

FRAMEWORK SERVICES

Permission AdminPackage AdminStart LevelURL Handler

SYSTEM SERVICES

Log ServiceConfiguration Admin ServiceDevice Access ServiceUser Admin ServiceIO Connector ServicePreferences ServiceComponent RuntimeDeployment AdminEvent AdminApplication Admin

PROTOCOL SERVICES

Http ServiceUPnP ServiceDMT Admin

MISCELLANEOUS SERVICES

Wire Admin ServiceXML Parser ServiceInitial ProvisioningForeign Application Access

JavaEE + OSGi

Wprowadzenie w OSGi

Jak zbudowa modu OSGi?

- paczka moduu OSGi jest standardowo archiwum JAR

- rne platformy dopuszczaj rwnie inne formy pakowania lub instalowanie bezporednio z katalogu plikw

- wystarczy doda plik META-INF/MANIFEST.MF do archiwum JAR, jedyny wymagany przez platform nagwek to Bundle-SymbolicName, pozostae s opcjonalne

- rczne deklarowanie nagwkw Import-Package i Export-Package jest polecane tylko w prostych przypadkach

- dostpnych jest kilka dobrych narzdzi wspomagajcych generowanie nagwkw osgi na bazie analizy statycznej kodu i deklaracji zalenoci:

aQute BND biblioteka Petera Kriensa z pluginami do ANT-a i MAVEN-a(maven-bundle-plugin)SpringSource Bundlor

- nagwek Bundle-ClassPath deklaruje wewntrzn sciek klas i zasobw paczki moduu, mog si na niej znajdowa zarwno katalogi jak i archiwa JAR zagniedone w gwnym archiwum

JavaEE + OSGi

Wprowadzenie w OSGi

Jak uy platformy OSGi w swoim projecie?

Kada z implementacji platformy OSGi posiada wasny sposb uycia oraz wasny model dostarczania moduw

Wikszo implementacji (w tym equinox i felix) dopuszcza zarwno uruchomienie samodzielne (standalone) jak i zagniedenie w innej aplikacji (embeded)

Implementacje rni si midzy sob zakresem dostpnych usug dodatkowych (specyfikacja COMPANION lub ENTERPRISE)

Uniwersalny charakter osgi umoliwia przenoszenie gotowych implementacji usug (dostpnych zazwyczaj jako osobne moduy) pomidzy rnymi platformami

Wybr implementacji platformy powinien by obojtny dla dziaania zainstalowanych na niej moduw (zaoenie)

Popularnym modelem dostarczania moduw do uruchomionej platformy jest automatyczne zaczytywanie archiww JAR z okrelonego katalogu

API platformy OSGi umoliwia atwe tworzenie wasnych mechanizmw adowania moduw

JavaEE + OSGi

Wprowadzenie w OSGi

2 poyteczne wzorce wspdziaania moduw

Wzorzec 1: Extender

Jeli chcemy uwolni obce moduy od koniecznoci samodzielnej integracji z dowolnym udostpnianym przez nas mechanizmem (api), moemy je w tym wyrczy stosujc wzorzec Extender.

Wzorzec Extender dziaa nastpujco:

-obserwujemy z uyciem BundleTracker inne moduy

-podczas instalacji lub startu obcego moduu sprawdzamy, czy nie posiada on informacji przeznaczonych dla naszego moduu (w formie nagwka lub pliku konfiguracyjnego)

-jeli obcy modu posiada odpowiednie informacje, to wykorzystujemy je dla uzupenienia lub skonfigurowania naszego mechanizmu

Cechy wzorca Extender:

-uwolnienie obcych moduw od znajomoci szczegw interakcji z naszym mechanizmem poprzez api (SoC), dostp do zasobw obcego moduu przed jego startem

Przykady: Spring DM, Declarative Services (DS)

JavaEE + OSGi

Wprowadzenie w OSGi

2 poyteczne wzorce wspdziaania moduw

Wzorzec 2: Whiteboard

Jeli chcemy uwolni obce moduy od koniecznoci samodzielnej integracji z dowolnym udostpnianym przez nas mechanizmem (poprzez api), moemy je w tym rwnie wyrczy stosujc wzorzec Whiteboard.

Wzorzec Whiteboard dziaa nastpujco:

-obserwujemy z uyciem ServiceTracker usugi wystawiane przez inne moduy

-jeli zostanie wystawiona interesujca nas usuga, pobieramy j i wykorzystujemy dla uzupenienia lub skonfigurowania naszego mechanizmu

Cechy wzorca Whiteboard:

-uwolnienie obcych moduw od znajomoci szczegw interakcji z naszym mechanizmem poprzez api (SoC)

-dynamiczna reakcja na usugi wystawiane lub wycofywane przez obce moduy

Przykad: Http Service

JavaEE + OSGi

Wprowadzenie w OSGi

Konkluzja: Dlaczego OSGi?

- moliwo uzyskania dowolnej podanej separacji i/lub wspdziaania moduw

- czytelna, deklaratywna konfiguracja waciwoci i zalenoci moduw

- silne zorientowanie na wspprac poprzez wymian usug (SOA-in-VM)

- pena obsuga cyklu ycia moduw

- otwarta i stabilna specyfikacja zarzdzana przez dedykowane konsorcjum

- minimalne api

- mae wymagania rodowiskowe (tylko JDK)

- dojrzae i sprawdzone implementacje dostpne dla rnych profili i zastosowa

JavaEE + OSGi

Wsppraca JavaEE z OSGi

Razem czy osobno?

JavaEE + OSGi

Wsppraca JavaEE z OSGi

JavaEE i OSGi rni si znacznie proponowanymi rozwizaniami :

Java EEOSGi

Elementarny instalowany elementaplikacja(ear,war)modu (bundle)

Wymiana kodu i usug midzy moduaminietak

Komunikacja z platform (serwerem)jednostronnadwustronna

Preferowany cykl yciastatycznydynamiczny

Zestaw usug serwera / platformyzamknityotwarty

Ukad zasobw aplikacji / moduusztywnydowolny

JavaEE + OSGi

Wsppraca JavaEE z OSGi

Java EEOSGi

Zaawansowana modularyzacja kodu-+

Repozytorium usug lokalnych-+

Obsuga zdalnych wywoa usug (WS)+-

Komunikacja poprzez zdarzenia-+

Przesyanie komunikatw (JMS)+-

Wsppraca z bazami danych (JPA)+-

Zarzdzaniem kontekstem aplikacji (DI)++

Zdalne zarzdzanie stanem aplikacji++

Monitorowanie stanu komponentw (JMX)+-

Auto-konfiguracja moduw i usug-+

Obsuga protokow sieciowych (http,rmi)++/-

JavaEE i OSGi uzupeniaj si jednak dobrze we wielu obszarach:

JavaEE + OSGi

Wsppraca JavaEE z OSGi

OSGi w wiecie aplikacji klasy Enterprise

- najmodsza ze specyfikacji osgi (Marzec 2010)

- otwarcie na technologie wypracowane i uywane od dawna w JavaEE

- dobry przykad: zaawansowana implementacja usugi zarzdzania kontekstami aplikacji w moduach: Spring DM

- powstaj powoli pierwsze implementacje platform osgi dedykowanych dla systemw enterprise (Apache Aries, Eclipse Virgo)

Wsparcie dla wszystkich komponentw webowych (servlet, filter, listener, ...) Blueprint Container (DI)JDBC, JPA, JTA jako usugi OSGiIntegracja z JNDIInstalowanie WAR jako moduu

JavaEE + OSGi

Wsppraca JavaEE z OSGi

2 drogi integracji JavaEE z OSGi

JVMJEE Server

Platforma OSGi12458673Platforma OSGi wewntrz aplikacji JEE

Platforma OSGiJVM12458673KomponentyJEE Server Serwer JEE jako usuga wewntrz OSGi

JavaEE + OSGi

Wsppraca JavaEE z OSGi

Platforma OSGi wewntrz aplikacji JEE

2 drogi integracji JavaEE z OSGi

Serwer JEE jako usuga wewntrz OSGi

Zalety:

Wykorzystanie potencjau i inwestycji w istniejce instalacje serwerw JEE

wysoka jako usug Java EE

Wady:

dualna architektura

rozproszone zarzdzanie i konfigurowanie

due problemy z pen integracj i wspprac platformy osgi z serwerem

Zalety:

homogeniczna architektura

pene wykorzystanie potencjau OSGi

otwarty katalog usug serwera

Wady:

rozwizanie niestandardowe

brak sprawdzonych implementacji

JavaEE + OSGi

Prezentacja platformywebowej osgi

JavaEE + OSGi

Platforma webowa osgi

Architektura Big Picture

Kontener

Platforma eb-osgi

Typy i zadania paczek

Konfiguracja warstwy prezentacji

Menu deklaratywne

Autoryzacja dostpw

Konteksty springowe, wymiana usug

Komunikacja w ramach SOA

Warstwa bazodanowa i transakcje

Komunikacja midzy paczkami, API

JavaEE + OSGi

Platforma webowa osgi

JavaEE + OSGi

Platforma webowa osgi

Kontener samodzielna aplikacja webowa J2EE zawierajca:

konfiguracj J2EE (web.xml, weblogic.xml)

kod startowy platformy eb-osgi (osgi-launcher)

konfiguracj platformy eb-osgi (felix.properties, launcher.properties)

listy paczek przeznaczonych do zainstalowania na platformie przy starcie (*-bundles.xml)

konfiguracj statyczn aplikacji

konfiguracj dla uruchomie standalone

JavaEE + OSGi

Platforma webowa osgi

Platforma eb-osgi zestaw bibliotek i moduw osgi tworzcych uniwersaln baz dla wielomoduowych aplikacji webowych:

osgi-launcher start Apache Felix, integracja z kontenerem WAR, serwlet integracyjny

osgi-deployment-bundle instalacja i start paczek na podstawie konfiguracji z plikw *-bundles.xml

osgi-http-proxy-bundle integracja z serwerem http, zarzdzanie kontekstami i sesjami

osgi-web-components-bundle rejestracja zasobw webowych (servlet, filter, file)

osgi-jsp-bundle obsuga stron JSP

osgi-struts-1-2-bundle obsuga Struts, Tiles i Walidator

JavaEE + OSGi

Platforma webowa osgi

Paczka archiwum JAR zawierajce skompilowany kod i inne zasoby, posiadajce plik META-INF/MANIFEST.MF z nagwkami wymaganymi przez osgi i z nagwkami wymaganymi przez platform webow.

Paczki rdzeniowe platformy webowej osgi

Zewntrzne paczki systemowe

Paczki biblioteczne

Paczki pomocnicze

Paczki klientw serwisw SOA

Paczki bazowe aplikacji

Paczki biznesowe aplikacji

JavaEE + OSGi

Platforma webowa osgi

Paczka osgi-launcher-bundle rejestruje zasoby www zadeklarowane przez paczki biznesowe za pomoc nagwkw w pliku MANIFEST.MF:Web-Context-Path kontekst wewntrzny zasobw paczki

Web-Context-Root katalog bazowy zasobw wewntrz paczki

Web-Exclude-Patterns lista wzorcw wyklucze

Paczka osgi-struts-1-2-bundle agreguje konfiguracje struts, tiles i walidator zadeklarowane przez paczki biznesowe za pomoc nagwkw w pliku MANIFEST.MF lub umieszczone w domylnej lokalizacji:Struts-Config lista plikw konfiguracji struts lub lokalizacja META-INF/struts

Tiles-Config lista plikw konfiguracji tiles lub lokalizacja META-INF/tiles

Validator-Config lista plikw konfiguracji lub lokalizacja META-INF/validator

Elementy struts i tiles dodawane s do moduu struts o ciece zadeklarowanej w Web-Context-Path

W eb-osgi moduy struts tworz struktur hierarchiczn, moduy nisze mog bez dodatkowych atrybutw korzysta z elementw zadeklarowanych u rodzicw

Pozycja moduu w hierarchi ustalana jest poprzez separacj elementw cieki moduu. Np. cieka /a/b/c oznacza hierarchi /,/a,/a/b,/a/b/c

Organizacja warstwy prezentacji, obsuga da HTTP i stron JSP

JavaEE + OSGi

Platforma webowa osgi

eb-osgi wykorzystuje Spring Dynamic Modules (Spring DM) do zarzdzania kontekstami springowymi

Konteksty podnosz si automatycznie przy starcie paczki z lokalizacji zadeklarowanych nagwkiem Spring-Context w pliku MANIFEST.MF lub z lokalizacji domylnej META-INF/spring

Wszystkie zadeklarowane konfiguracje z jednej paczki tworz jeden zagregowany kontekst aplikacji

Spring DM udostpnia moliwo: rejestracji z poziomu konfiguracji beanw springowych jako usug w repozytorium osgi (