Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák OSGi Balogh András
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 ●…
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ő
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
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
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
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
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
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)
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
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
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
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
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
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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 Bundle diagramm
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
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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Csomag kényszerek Csomag attribútumok −Kötelező, vagy opcionális
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.
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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Bundle életciklus
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
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
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
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)
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
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
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
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
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
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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Elemek Service A szolgáltatást megvalósító objektum
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 Elemek ServiceRegistry A szolgáltatás regisztrációkat tartalmazza
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
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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 Elemek ServiceListener Service eseményeket figyel
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
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());
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”
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
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
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