Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák OSGi Balogh András

Hasonló előadás


Az előadások a következő témára: "Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák OSGi Balogh András"— Előadás másolata:

1 Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák OSGi Balogh András abalogh@mit.bme.hu

2 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 OSGi  Az OSGi Alliance 1999-ben alakult −Nyílt specifikációk fejlesztése −Hálózati menedzselt szolgáltatásokhoz ●„network appliances” −Közös architektúra −Sok területen elterjedt ●SOHO eszközök ●Eclipse ●Szerver-oldali alkalmazások ●…

3 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 OSGi framework  A rendszer magja  Java futtatórendszer menedzselt komponensek számára −Általános célú −Menezselt −Biztonságos −kiterjeszthető

4 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 OSGi framework  Letölthet és telepíthet szoftver komponenseket  Kezeli a komponensek közötti függőségeket és szolgáltatásokat  Kezeli a komponens verziókat  Komponens = bundle

5 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 Security layer  Alapja a Java2 Security  Kód autentikáció −Telepítési hely alapján −Aláírás alapján  Magas szintű szolgáltatások −Permission Admin service – a teljes elérési út alapján menedzseli a jogokat −Conditional Permission Admin service – összetett feltételek alapján menedzseli a jogokat

6 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 Security layer  A Java 2 Security API szükséges −Erőforrás-korlátos platformokon ez lehet egy stub  Digitális aláírással ellátott jar file-ok −Azonosítják az aláírót −Megakadályozzák a későbbi módosítást −Jogok delegálhatóak −DSA/RSA aláírások  Aláírások, certificate-ek: lásd adatbiztonság

7 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 Module layer  Java modulok kezelése  Standard, általános módon  Modulok : bundle −Egy jar file ●Manifeszt ●Osztályok ●Erőforrás fájlok −A bundle-k megoszthatnak egymás között osztályokat

8 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 Module layer  A modulok indíthatók, leállíthatók  A futó bundle-k szolgáltatásai kiajánlásra kerülnek  Fontos manifeszt adatok −Bundle-activator: az életciklus menedzselését végző osztály neve −Bundle-classpath: a bundle-n belüli classpath- ok listája. A default értéke. (a bundle root) −Bundle-name: olvasható név

9 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 Module layer  Fontos manifeszt adatok −Bundle-SymbolicName: azonosító (egyedi) −Bundle-UpdateLocation: URL, ahonnan a firssítések letölthetőek −Export-Package: a kiajánlott java csomagok listája −Import-Package: importált csomagok listája −Require-Bundle: szükséges modulok listája (import + függőségek)

10 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 Class loading  Minden bundle egy vm-en belül fut  Minden bundle-nak saját class loadere van −3 helyről tölthet be osztályokat/erőforrásokat ●Boot class path: java.* csomagok és implementációik ●Framework class path: a framework-nek saját class loadere can, amitől elkérhetőek az interfészek és implementáló osztályok ●Bundle space: a bundle jar fájljai, valamint a hozzá kötődő egyéb jar-ok

11 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 Module layer  Egy bundle class space-e −A szülő class loader-e (java.*) −Importált csomagok −Függőségek −A bundle privát classpath-a −Csatolt fragmensek

12 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 Bundle feloldás  Feloldás: az importerek és exporterek összekötése −Kényszereknek megfelelően  Vezeték (wire): összeköttetés importer és exporter között −Valid – ha teljesít minden kényszert

13 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 Metaadat feloldás  Bundle-SymbolicName −kötelező, egyedi azonosító −Ha két egyező nevű és verziójú van, a második telepítése sikertelen −Paraméterek ●Singleton: csak egyetlen verziója lehet betöltve ●Fragment-attached: definiálja, hogyan lehet fragmenseket hozzákapcsolni  Always: bármikor kapcsolódhat  Never: nem lehetséges  Resolve-time: csak a resolve fázisban

14 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 Metaadat feloldás  Bundle-Version −Meghatározott formátum major.minor.micro.qualifier −Összehasonlítás hierarchikus ●Numerikusan, illetve a qualifier esetén String.compareTo ●Két verzió akkor azonos, ha minden szegmensük egyezik

15 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 Metaadat feloldás  Imported-packages −Importált csomagok listája −Resolution – a csomagot fel kell oldani ha kötelező import, ha ez sikertelen a bundle sem töltődhet be −Version – verzió intervallum a csomagot exportáló csomagra zárt [], nyitott (), pl. [1.0.0,2.0.0) −Bundle-version: az exportáló bundle verziója −Bundle-symbolic-name: az exportáló bundle neve

16 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 Bundle diagramm

17 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 Opcionális import  Nem feltétlenül szükséges csomagok −Fel kell készülni arra, hogy kivétel keletkezik, ha a betöltés nem sikeres −Optional kulcsszó az importnál

18 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Csomag kényszerek  Ha egy csomagot exportálunk, a benne levő osztályokkal függésben levőket is exportálni kell  Minden csomaghoz minden bundle csak egy exportert vehet igénybe  Egy importált csomag használhat másokat, ezeket minden bundle ugyanazzal a classloaderrel tölti be

19 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Csomag kényszerek  Csomag attribútumok −Kötelező, vagy opcionális

20 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Csomag kényszerek  Csomag attribútumok −Osztály szűrés ●Include ●Exclude −Pl.

21 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Fragmensek  Egy bundle-hez kapcsolódnak −Resolve közben  Használati esetek −Lokalizáció −(Patch)  Összefésülésre kerül a host bundle-vel −Import −Export −Require-bundle  Host spec: Fragment-host

22 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Bundle életciklus

23 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Bundle kezelés  BundleActivator −start(BundleContext) – a bundle indítása ●Ha sikeresen lefut, a bundle aktív állapotba kerül ●Thread-ek indítása, szolgáltatások regisztrációja, stb. −stop(BundleContext) – a bundle leállítása ●Minden, a startban regisztrált/indított folyamatot undo-zik ●A service-eket és framework listenereket a framework törli

24 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 Bundle kezelés  Bundle interfész −start() indítás −stop() leállítás −update() frissítés ●Verzióváltás ●A bundle által megadott URL-ről próbálja −update(InputStream) frissítés ●Verzióváltás ●Az inputStream-ből próbálja −Uninstall() ●A bundle eltávolítása

25 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 Bundle kezelés  Bundle interfész −getHeaders() ●Manifeszt fejlécek lekérdezése −getEntry(String) ●Erőforrás megkeresése a jar fájlon belül

26 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 Bundle kezelés  BundleContext −installBundle(String) ●Bundle telepítése adott url-ről −getBundle() ●A bundle objektumot adja vissza −getBundles() ●A telepített bundle-k listáját adja vissza −getBundle(long) ●Egyedi azonosító alapján keres egy bundle-t (null ha nincs)

27 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 Eseménykezelés  BundleEvent −A bundle életciklusának kezelésére  BundleListener, SynchronousBundleListener −Események aszinkron/szinkron feldolgozása −INSTALLED- a bundle telepítve −RESOLVED – sikeres feloldás −STARTING – a framework indítani készül a bundle-t −STARTED – sikeres indítás −STOPPING – leállításra készül a framework −STOPPED – leállítás befejeződött −UNINSTALLED – bundle törölve −UNRESOLVED – update után lehet −UPDATED – a bundle frissíve lett

28 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 Eseménykezelés  FrameworkListener – FrameworkEvent −Framework események −ERROR – fontos hibák küldése −INFO – általános információk −PAKCAGES_REFRESHED – a framework frissítette a csomagokat −STARTED – a framework elvégezte az inicializálást és normál üzemmódba ért −WARNING – figyelmeztető üzenetek

29 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 Framework indítás 1.Eseménykezelés bekapcsolása 2.A system bundle starting állapotba lép 3.Minden korábban számba vett, indítandó bundle elindítása, hiba esetén ERROR 4.A system bundle ACTIVE állapotba lép 5.STARTED esemény szétküldése

30 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 Framework leállítás 1.A system bundle STOPPING állapotba lép 2.Minden aktív bundle leállításra kerül. Hibák esetén ERROR üzenetek 3.Eseménykezelés letiltása

31 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 Szolgáltatási réteg  Definiálja az együttműködési modellt −„Publish, find, and bind” −A szolgáltatás egy normál java objektum −Regisztrálódik egy vagy több java interfész alatt  A bundle-k −Regisztrálhatnak −Kereshetnek −Használhatnak szolgáltatásokat −Illetve, ezekkel kapcsolatban eseményeket kezelhetnek

32 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 Alapok  Kollaboratív: bundle-k közötti együttműködés  Dinamikus: futásidejű változások  Biztonságos: hozzáférés korlátozható  Reflektív: teljes hozzáférés a réteg belső állaptához  Verziókezelés: a szolgáltatások fejlődhetnek  Perzisztens id: framework indítások között is lehet a szolgáltatásokat követni

33 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Elemek Service A szolgáltatást megvalósító objektum

34 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 Elemek ServiceRegistry A szolgáltatás regisztrációkat tartalmazza

35 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 Elemek ServiceRegistration A szolgáltatás adatait tartalmazza, lehetővé teszi a regisztráció menedzselését

36 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Elemek ServiceFactory Lehetővé teszi a szolgáltatás testre szabását az igénybe vevőtől függően

37 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 Elemek ServiceListener Service eseményeket figyel

38 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 Elemek Filter Egyszerű szűrő nyelvet ad meg, mely a szolgáltatások attribútumaira szűr

39 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 Szolgáltatások regisztrációja  BundleContext −registerService(String, Object, Dictionary) ●Egy adott interfész név alá regisztálja a szolgáltatást −registerService(String[], Object, Dictionary) ●Több interfész név alá regisztálja a szolgáltatást −ServiceRegistration.unregister() ●Regisztráció visszavonása service = new HelloServiceImpl(); // register the service context.registerService(HelloService.class.getName(), service, new Hashtable());

40 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Szolgáltatás keresése  BundleContext −getServiceReference(String) ●Ha több van, a ranking dönt −getServiceReferences(String,String) ●Az összes referencia az adott interfészhez és filterhez −getService(ServiceReference) ●A szolgáltatás objektumot adja vissza −ungetService(ServiceReference) ●Szolgáltatás „elengedése”

41 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 Eseménykezelés  ServiceEvent −Regisztrálás −Visszavonás −Attribútum változás figyelése −getType() : int a típus  ServiceListener −Service event-eket fogad −Csak, ha van legalább GET joga az adott szolgáltatás interfészéhez

42 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 ServiceFactory  Lehetőség a szolgáltatások testre szabására  Életciuklus-menedzsment  getService(Bundle, ServiceRegistration) −Szolgáltatás kérése  ungetService(Bundle, ServiceRegistration) −Szolgáltatás lemondása

43 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 ServicePermission  Paraméterek −Interfész neve −Akció ●REGISTER – a bundle regisztrálhatja a szolgáltatást ●GET – megkaphatja a szolgáltatást  Több interfészre regisztráláskor mindegyikre kell legyen REGISTER jog


Letölteni ppt "Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák OSGi Balogh András"

Hasonló előadás


Google Hirdetések