Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. OSGi

Hasonló dokumentumok
Eszközintegráció OSGi segítségével. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Hová tűnt a sok kereszthivatkozás?

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Közösség, projektek, IDE

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

JAVA webes alkalmazások

A Java EE 5 plattform

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

JNDI - alapok. Java Naming and Directory Interface

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Utolsó módosítás:

OOP és UML Áttekintés

eseményvezérelt megoldások Vizuális programozás 5. előadás

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Utolsó módosítás:

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Web-fejlesztés NGM_IN002_1

Utolsó módosítás:

Enterprise JavaBeans 1.4 platform (EJB 2.0)

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Oralce kliens installálása Windows Server 2003-ra

Hálózati operációs rendszerek II.

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Párhuzamos és Grid rendszerek

Microsoft SQL Server telepítése

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Utolsó módosítás:

Hálózati operációs rendszerek II. Novell Netware 5.1 Hálózati nyomtatás

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Broadcast Service Widget

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

MVC. Model View Controller

RIA Rich Internet Application

Gyakorlat és házi feladat tájékoztató

VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV

5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

IBM WorkLight 5.0 mobil alkalmazás platform

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

ALKALMAZÁS KERETRENDSZER

Oracle9i Alkalmazás Szerver Üzleti folyamat integráció. Molnár Balázs Vezető értékesítési konzultáns Oracle Hungary

NEPTUN ID BMENET ID. Címtár BME VPN. vcenter VPN SVN. Trac Wiki. Wifi

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV ősz

Bevezető. Servlet alapgondolatok

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

A Matarka szerszámosládája

és az instanceof operátor

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

A JavaServer Pages (JSP)

Viczián István IP Systems JUM XIX szeptember 18.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

ANDROID ALKALMAZÁSFEJLESZTÉS

Metamodellezés. Simon Balázs BME IIT, 2011.

Programozási technológia 2.

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Webes alkalmazások fejlesztése

Szolgáltatás Orientált Architektúra és több felhasználós adatbázis használata OKF keretein belül. Beke Dániel

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv


Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Hálózati rendszerek adminisztrációja JunOS OS alapokon

Miről lesz szó? Setup Project készítése. Tulajdonságok. 1. Készítsünk egy setup project alkalmazást egy már elkészített, lefordított programhoz.

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

Junior Java Képzés. Tematika

Mobil Informatikai Rendszerek

Book Template Title. Author Last Name, Author First Name

Guarding Vision Beállítása

!!" KÉSZÍTK: ERDÉLYI LAJOS KOLLÁR NÁNDOR WD6OGW BUK8Y7

Komponens alapú programozás Bevezetés

Segédanyag: Java alkalmazások gyakorlat

DCWatch fejlesztői HUB: dchub://4242.hu:1411 Elite Hub, ahol megnézheted működés közben a BOT-ot: dchub://elite.4242.hu:4242

ALKALMAZÁSOK ISMERTETÉSE

Utolsó módosítás:

CMDB architektúra megjelenítése SAMU-val Rugalmas megoldás. ITSMF Bekk Nándor Magyar Telekom / IT szolgáltatás menedzsment központ

Segédanyag: Java alkalmazások gyakorlat

Osztott rendszerek, Java EE. Általános bevezető

A JavaServer Pages (JSP)

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

API tervezése mobil környezetbe. gyakorlat

Java I. A Java programozási nyelv

A SZOFTVERTECHNOLÓGIA ALAPJAI

Mobil Informatikai Rendszerek

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Oktatási cloud használata

UML (Unified Modelling Language)

Alkalmazás és megjelenítés virtualizáció

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

DRUPAL 7. újdonságai. Hojtsy Gábor Drupal Hétvége, Budapest november 14. Angela Byron fóliái alapján

Földmérési és Távérzékelési Intézet

Átírás:

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék OSGi

OSGi A dynamic module system for Java OSGI szövetség (www.osgi.org) ~30 teljes tag (Nokia, IBM, NTT, Motorola, stb.) Közös problémák (integráció, verziózás, élet ciklus) Megoldás OSGI szabvány (specifikáció) Komponens alapú Közös integrációs primítvekkel (interfészek, leírók, stb.) Jelenleg: 4.2 es verzió (2009 szeptember)

OSGi OSGi Services ApplicaZons Lifecycle Bundles Java runzme environment OperaZng system

Modulok (bundles) OSGi alapok: modulok o Public és private API láthatósága o Függőség kezelés o Verziózás

Életciklus (Life cycle) Dinamikus Bundle: o Betöltés (install) o Start/stop o Update OSGi alapok: életciklus

OSGi alapok: Bundle életciklus modell install INSTALLED STARTING resolve update uninstall RESOLVED start ACTIVE uninstall UNINSTALLED stop STOPPING

OSGi alapok: szolgáltatások Szolgáltatás orientált (Services): o Bundle- ok kiajánlhatóak o Kereshetőek (service registry) o Futás idő közben megjelenhetnek(/eltűnhetnek)!

OSGi Bundles

OSGi belülről (Manifest.MF) IdenZfikáció: o Bundle- SymbolicName: org.eclipse.equinox.registry o Bundle- Version: 3.2.100.v20060918 o Bundle- Name: Eclipse Extension Registry o Bundle- Vendor: Eclipse.org ClassPath: o Bundle- ClassPath:., someotherjar.jar Életciklus: o Bundle- AcZvator: org.eclipse.core.internal.registry.osgi.aczvator Függőségek: o Import- Package: javax.xml.parsers, o org.xml.sax, o org.osgi.framework;version=1.3 o Require- Bundle: org.eclipse.equinox.common;bundle- version="[3.2.0,4.0.0)" o Bundle- RequiredExecuZonEnvironment: CDC- 1.0/FoundaZon- 1.0,J2SE- 1.3 Kiajánlás (export) o Export- Package: org.eclipse.equinox.registry

Modul réteg A modulok indíthatók, leállíthatók A futó bundle- k szolgáltatásai kiajánlásra kerülnek Fontos manifeszt adatok o Bundle- aczvator: az életciklus menedzselését végző osztály neve o Bundle- classpath: a bundle- n belüli classpath- ok listája. A default értéke:. (a bundle root) o Bundle- name: olvasható név o Bundle- SymbolicName: azonosító (egyedi) o Bundle- UpdateLocaZon: URL, ahonnan a firssítések letölthetőek o Export- Package: a kiajánlou java csomagok listája o Import- Package: importált csomagok listája o Require- Bundle: szükséges modulok listája (import + függőségek)

Class loading Minden bundle egy vm- en belül fut Minden bundle- nak saját class loadere van o 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 van, 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

Class loading Class space Egy bundle class space- e o A szülő class loader- e (java.*) o Importált csomagok o Függőségek o A bundle privát classpath- a o Csatolt fragmensek

Bundle feloldás Feloldás: az importerek és exporterek összekötése o Kényszereknek megfelelően Vezeték (wire): összeköuetés importer és exporter közöu o Valid ha teljesít minden kényszert

Metaadat feloldás Bundle- SymbolicName o kötelező, egyedi azonosító o Ha két egyező nevű és verziójú van, a második telepítése sikertelen o Paraméterek Singleton: csak egyetlen verziója lehet betöltve Fragment- auached: definiálja, hogyan lehet fragmenseket hozzákapcsolni Always: bármikor kapcsolódhat Never: nem lehetséges Resolve- Zme: csak a resolve fázisban Bundle-SymbolicName: com.acme.foo;singleton:=true o Példa: Bundle- Version o Meghatározou formátum: major.minor.micro.qualifier o Összehasonlítás hierarchikus Numerikusan, illetve a qualifier esetén String.compareTo Két verzió akkor azonos, ha minden szegmensük egyezik o Példa: Bundle-Version: 22.3.58.build-345678

Metaadat feloldás Imported- packages o Importált csomagok listája o ResoluZon a csomagot fel kell oldani kötelező import esetében, ha ez sikertelen a bundle sem töltődhet be o Version verzió intervallum a csomagot exportáló csomagra zárt [], nyitou (), pl. [1.0.0,2.0.0) o Bundle- version: az exportáló bundle verziója o Bundle- symbolic- name: az exportáló bundle neve o Példa: Exported- packages o Exportált csomagok listája o Hasonlóan az Imported- packages- hez o Példa: Import-Package: com.acme.foo;com.acme.bar; version="[1.23,1.24]"; resolution:=mandatory Export-Package: com.acme.foo;com.acme.bar;version=1.23

Bundle diagram Szöveges leírás Grafikus ábrázolás Jelölés

OSGi Services

Szolgáltatási réteg Definiálja az együuműködési modellt o Publish, find, and bind o A szolgáltatás egy normál java objektum o Regisztrálódik egy vagy több java interfész alau A bundle- k o Regisztrálhatnak o Kereshetnek o Használhatnak szolgáltatásokat o Illetve, ezekkel kapcsolatban eseményeket kezelhetnek

Szolgáltatási réteg - alaptulajdonságok KollaboraTv: bundle- k közö{ együuműködés megvalósítása Dinamikus: futásidejű változások o Új szolgáltatások megjelenése o Régi szolgáltatások megszűnése Biztonságos: hozzáférés korlátozható ReflekTv: teljes hozzáférés a réteg belső állapotához Verziókezelés: a szolgáltatások frissülhetnek Perzisztens id: framework indítások közöu is lehet a szolgáltatásokat követni

Szolgáltatási réteg elemei Service A szolgáltatást megvalósító objektum

Szolgáltatási réteg elemei ServiceRegistry Tartalmazza a beregisztrált szolgáltatásokat

Szolgáltatási réteg elemei ServiceReference Hozzáférést biztosít a szolgáltatás tulajdonságaihoz, de magához az objektumhoz nem.

Szolgáltatási réteg elemei ServiceRegistra0on A szolgáltatás adatait tartalmazza, lehetővé teszi a regisztráció menedzselését

Szolgáltatási réteg elemei ServiceListener Szolgáltatással kapcsolatos eseményeket figyel. Pl.: szolgáltatás megjelenés / eltűnés

Szolgáltatási réteg elemei Filter Egyszerű szűrő nyelvet ad meg, mely a szolgáltatások auribútumaira szűr

Szolgáltatások életciklusa Service Consumer Service Registry Service Provider Service <<create>> 1 : Create Service Object() 2 : Register Service() 3 : Find Service() 4 : Service Refs [0..n] 5 : Get Service() 6 : Service Objects 7 : Use Services() 8 : Unget Service()

Szolgáltatások regisztrációja Service Consumer Service Registry Service Provider Service <<create>> 1 : Create Service Object() 2 : Register Service() 3 : Find Service() BundleContext Példa registerservice(string, 4 : Refs [0..n] Object, DicZonary) Egy adou interfész név alá regisztálja a szolgáltatást 5 : Get Service() registerservice(string[], Object, DicZonary) 6 Több : Service interfész Objects név alá regisztálja a szolgáltatást 7 : Use Services() service = new HelloServiceImpl(); 8 : Unget Service() // register the service context.registerservice(helloservice.class.getname(), service, new Hashtable());

Szolgáltatások keresése Service Consumer Service Registry Service Provider Service 3 : Find Service() 4 : Service Refs [0..n] 5 : Get Service() 6 : Service Objects 8 : Unget Service() BundleContext 2 : Register Service() 7 : Use Services() getservicereference(string) <<create>> 1 : Create Service Object() Ha több van, a ranking dönt getservicereferences(string,string) Az összes referencia az adou interfészhez és filterhez getservice(servicereference) A szolgáltatás objektumot adja vissza ungetservice(servicereference) Szolgáltatás elengedése Példa ServiceReference reference = context.getservicereference( HelloService.class.getName()); HelloService service = (HelloService) context. (reference); getservice 2

Service Tracker Problémák a szolgáltatások közvetlen lekérésével o Nincs értesítés, ha egy szolgáltatás megszűnik/megjelenik o Alacsony szintű API o Minden alkalommal le kéne kérni a szolgáltatást, amikor használni akarjuk o Lehetőség még a ServiceListener használata, de könnyű hibázni o Körülményes, sok Java kód Megoldás: a ServiceTracker használata o Szolgáltatáshoz lehet regisztrálni o Jelez, ha Megjelenik egy, az adou Tpusú szolgáltatás Eltűnik egy, az adou Tpusú szolgáltatás Módosul egy, az adou Tpusú szolgáltatás

OSGi compendium

OSGi compendium OSGi core spefikáció kiegészítése Szolgáltatások jegyzéke Fontosabb szolgáltatás csoportok o DeclaraZve Services: DeklaraTv modell szolgáltatások kezelésére o Hup Service: Hup alapú szolgáltatások o Remote Services: Szolgáltatások használat különböző framework- ök közöu (Version 1.0) o Log Service: általános célú logolásra alkalmas szolgáltatások o stb

DeclaraZve Services DS előzménye: Service Binder o Humbertó Cervantes és Richard Hall fejleszteuék ki o Szolgáltások függőségeinek automazkus menedzselése o Fejlesztő a szolgáltatások írására koncentrálhat (POJO) DS a Compendium services része R4 óta o XML leírók (komponens leíró) o Publish, find, and bind deklaratv módon o Válasszuk szét a felelőségeket: Szolgáltatás implementáció továbbra is bundle felelőssége Szolgáltatás regisztráció Service Component RunZme (SRC) o Dinamikus, mint a szervizek o On demand betöltés, mint az Eclipse Extension- ök.

XML alapú DS komponens leíró DeklaraTv módja a szervizek regisztrálásának, kötésének OSGI- INF könyvtárban Több komponens egy bundle- ban MANIFEST.MF- ban összeset fel kell venni o Service- Component 3

Példa komponensleíróra <scr:component xmlns:scr="http://www.osgi.org/ xmlns/scr/v1.1.0" name="sample.component"> <implementation class="org.sample.helloserviceimpl"/> <service> <provide interface="org.sample.helloservice"/> </service> <reference bind="setservice" unbind="unsetservice" cardinality="0..1" Kiajánlou szolgáltatás definíciója Felhasznált szolgáltatás interface="org.sample.serviceforhello" name= SERVICEFORHELLO" policy="dynamic"/> </scr:component>

DS komponens leíró Eclipse támogatás: DeclaraZve Service Tooling o Component DefiniZon Editor

DS komponensek összekapcsolása 3 dimenzió o Opcionális / Kötelező o Egy értékű / Több értekű o StaZkus / Dinamikus Első két dimenziót adja a számosság (cardinality): o 0..1 opcionális, egy értékű o 1..1 kötelező, egy értékű o 1..n kötelező, több értékű o 0..n opcionális, több értékű Harmadik dimenziót pedig a policy o dynamic: a szolgáltatás menet közben kicserélhető o stazc: garantáltan egy szolgáltatás lesz végig (pl. állapoual rendelkező szolgáltatás esetében) <reference bind="setservice" unbind="unsetservice" cardinality="0..1" interface="org.sample.serviceforhello" name= SERVICEFORHELLO" policy="dynamic"/> 3

3 dimenzió DS komponensek összekapcsolása o Opcionális / Kötelező o Egy értékű / Több értekű o StaZkus / Dinamikus Első két dimenziót adja a számosság (cardinality): o 0..1 opcionális, egy értékű o 1..1 kötelező, egy értékű o 1..n kötelező, több értékű o 0..n opcionális, több értékű Harmadik dimenziót pedig a policy Szolgáltatás megjelenése esetén hívandó metódus o dynamic: a szolgáltatás menet közben kicserélhető o stazc: garantáltan egy szolgáltatás lesz végig (pl. állapoual rendelkező szolgáltatás esetében) Szolgáltatás megszűnése esetén hívandó metódus <reference bind="setservice" unbind="unsetservice" cardinality="0..1" interface="org.sample.serviceforhello" name= SERVICEFORHELLO" policy="dynamic"/> 3

DS Életciklus menedzselés Service Consumer Service Registry Service Component Runtime Service Provider Service 1 : Declare Service Component() 3 : Find Service() 2 : Register Service Factory() 4 : Service Refs 5 : Get Service() 6 : Activate() 7 : Load Bundle() 8 : Create Service Object() 11 : Service Object 13 : Unget Services() 10 : Service Object 12 : Use Services() 9 : Service Object

DS Életciklus menedzselés Service Consumer Service Registry Service Component Runtime Service Provider Service 1 : Declare Service Component() 2 : Register Service Factory() 3 : Find Service() 4 : Service Refs 5 : Get Service() 6 : Activate() 7 : Load Bundle() Komponens leírok használatával 8 : Create Service Object() 11 : Service Object 10 : Service Object 12 : Use Services() 9 : Service Object 13 : Unget Services() Szolgáltatás on- the- fly jön létre, amikor szükség van rá

Hup services Egyike a legrégebbi, legelterjedtebb szolgáltatásnak OSGi alapú webes komponensek fejlesztése Jelenleg támogatou komponensek o Servlet- ek regisztrálsa Servlet- ek regisztrálása on- the- fly OSGi servlet- be csomagolva o Erőforrások regisztrálása (HTML fájlok, képek, stb ) Alkalmazások o Pl. Apache Felix Web Console: OSGi konténerek monitorozása

Követelmények Remote Services o Átlátszóság: nincs különbség helyi és távoli szolgáltatások közöu o Általános: Ne állítson korlátokat az elosztousággal o Konzisztens viselkedés: helyi és távoli szerver ugyanúgy viselkedjen Elosztou alkalmazások készítése

Remote Services Property- ben a importált szolgáltatás Property- ben a kiexportált szolgáltatás Átlátszó módon Szolgáltatások proxy- ként

Eclipse Equinox 4

OSGi implementációk Open Source o Eclipse Equinox (hgp://www.eclipse.org/equinox/) o Apache Felix (hup://cwiki.apache.org/felix/index.html) o Knopflerfish (hup://www.knopflerfish.org/) o ProSyst mbedded Server Equinox EdiZon (hup:// www.prosyst.com/products/osgi_se_equi_ed.html) Fizetős: o ProSyst (hup://www.prosyst.com/) o Knopflerfish Pro (hup://www.gatespacetelemazcs.com/)

OSGi, Eclipse és Equinox viszonya OSGi szövetség o Nyílt szabvány o Komponens alapú leírások o Egyre szélesebb alkalmazási kör (mobil, szerver, desktop, vállalaz, beágyazou) Eclipse o RCP használata nagyon megnőu o Eclipse runzme lecserélése nyílt szabványra o Eclipse 3.0 óta OSGi- ra épül Equinox o Eclipse OSGi implementációja (3.3 óta) o Szerver oldali eclipse több ennél o OSGi 4.0 és 4.1 referencia implementáció

Equinox RunZme OSGi 4.1 ref implementáció + Eclipse Extension mechanizmusa! Több mint szerver oldali Eclipse! (ercp, RCP, server side, ) o Extension és extension point definíciók o Erős support SDK oldalon o Add- on: Admin Security ApplicaZon container

Eclipse IDE és Hol használják

Equinox mint szerver Equinox runzme + szerver oldali add- ons o HTTP service/registry o Jeuy: beépíteu pehelysúlyú webszerver o Integrációs bundle- ok (ServletBridge=Servlet/JSP, stb.)

Equinox Szerver oldali variánsok Tradícionális App szerver Equinox beágyazva egy App szerverbe Tiszta Equinox Equinox Equinoxba ágyazva App szerver Equinoxban

Tradícionális APP szerver Funkciók war- okba csomagolva App menedzsment teljes war cserével/updateuel/ stb. Izolált applikációk

Equinox beágyazva egy App szerverbe Bridge Servelt integráció Izolált applikációk Eddigi infrastruktára is felrakható WAR kezelés bundle kezelésen keresztül

Tiszta Equinox Közvetlen Equinox fuuatás Izolált Processzek! HTTP Jeuy- n keresztül App install/update/ bundle kezelésen keresztül!

Equinox Equinoxba ágyazva Közvetlen Equinox fuuatás ebbe ágyazva a többi Eq- t Beágyazou Equinox szintű izoláció App install/update/ bundle kezelésen keresztül Rekurzív infrastruktúra leképezés óriási méretek kezelése

App szerver Equinoxban App szerver mint egy bundle Teljeskörű dinamikus szerver konfiguráció bundle kezelésen keresztül! Minden eddigi megoldást képes fuuatni!

Előnyei Az egyes komponenseknek inkrementális frissítése Többszörös instance fuuatás párhuzamosan HA / nagy sebesség Management Külön- Külön és akár együuesen is (szinteken) Más- más igényekhez másként paraméterezeu instancek Class loading teljesítmény növekedés Komponens megosztás server és kliens közöu o Hálózat nélküli mód támogatása

OSGi konzol 5

OSGi konzol OSGi prompt ~ Hasonló egy DOS v. Bash prompt- hoz Eclipse támogatás o Console view o Highlight

OSGi konzol - parancsok Hasznos parancsok o ss: kilistázza az telepíteu bundle- okat. o start <id>: elindítja a megadou azonosítójú bundle- t o stop <id>: leállítja a megadou azonosítójú bundle- t o install file:<path>: telepíz a megadou bundle - t o uninstall <id>: eltávolítja a megadou bundle- t o update <id>: frissíz a megadou bundle- t o services <filter>: kilistázza a futó szolgáltatásokat pl.: osgi> services (objectclass=*helloservice) o shutdown: a futó osgi framework leállítása o close: shutdown és exit o exit: ~ System.exit 5

Eclipse vs. OSGi

Bundle vs. Plug- in OSGi Eclipse Bundle? Plug-In

Bundle vs plug- in

Eclipse extensions vs. OSGi services Eclipse kiterjesztés o Egy kiterjesztési pont, amit bárki kiterjeszthet o UI kiegészítések (túl kicsik OSGi szolgáltatáshoz) o Nem kód jellegű kiegészítések Témák megadása Command framework jelentős része OSGi szolgáltatás o Szolgáltatásokat bárki definiálhat o Szolgáltatásokat bárki használhat o Nagyon dinamikus framework o Laza csatolás

Eclipse extensions vs. OSGi services Extensions Services (Decla(ve Services) Mit regisztrálunk XML deklarációk Java Objektumok Java Objektumok (Proxy az első tényleges használazg Hogyan regisztrálunk A plugin.xml összes extension- je automa&kusan A BundleContext API- ját használva manuálisan A Service- Component leírókban lévő összes szerviz automa&kusan Hogyan használjuk fel Lekérhetőek az Extension point ID- vel Lekérhetőek az inteface nevével és property filterekkel. Ua., mint services esetében, de a szolgáltatást az SCR állítja be a megadou metódusokkal. Milyen a kapcsolat számossága One- to- many: egy Extension point- nak több Extension- je is lehet, de minden Extension- höz pont egy Extension point tartozhat Many- to- many: egy szolgáltatást többen használhatnak és egy felhasználó több szolgáltatást használhat Ua., mint services Mikor töltődik be Az Extension deklarációk indulásnál töltődnek be, de az ou szereplő osztályok lazy- loading- gal. A megvalósító osztályt a betöltés előu létre kell hozni. A proxy elemnek köszönhetően a szolgáltatás csak akkor töltődik, amikor szükség van rá

Required- Bundle vs. Import- Package Required- Bundle o Eclipse felhasználók o Minden package- t beimportál amit a bundle kiajánl re- exported package- ket is o Erősebb csatolás Import- Package o OSGi felhasználók o Csak a megadou package- ket importálja be o Lazább csatolás o Kevesebb látszik