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

Programrendszerek Fejlesztése 7/67/6 1 Tartalom  OSGI  Bevezető  A cél környezet kezelése  OSGI alapok  Komponensek  Szolgáltatások  Spring 

Hasonló előadás


Az előadások a következő témára: "Programrendszerek Fejlesztése 7/67/6 1 Tartalom  OSGI  Bevezető  A cél környezet kezelése  OSGI alapok  Komponensek  Szolgáltatások  Spring "— Előadás másolata:

1

2 Programrendszerek Fejlesztése 7/67/6 1

3 Tartalom  OSGI  Bevezető  A cél környezet kezelése  OSGI alapok  Komponensek  Szolgáltatások  Spring  Spring a középrétegben  Spring Inversion of Control + AOP  Objektumok összedrótozása  Spring adatbázis komponensek

4 3 Az OSGi platform  Egy Java™ keretrendszer távolról telepíthető szolgáltatások és alkalmazások kezelésére:  Megbízhatóság  Széles skálájú elosztás  Eszközök széles spektruma  Együttműködő  4.0 verzió www.osgi.org …

5 OSGi tagok 4 Nokia Corporation NTT Oracle Corporation ProSyst Software GmbH Red Hat Samsung Electronics Co., Ltd. SAP AG Siemens AG Siemens Enterprise Communications Software AG SpringSource Sprint Sun Microsystems, Inc. Telcordia Technologies, Inc. TIBCO Software In Aplix Corporation Deutsche Telekom Ericsson Mobile Platforms AB GigaSpaces Technologies Harman/Becker Automotive Systems GmbH Hitachi, Ltd. IBM Corporation Industrial Technology Research Institute IONA Technologies LinkedIn Makewave Mitsubishi Electric Corporation Motorola, Inc. NEC Corporation

6 5 Miért használjuk az OSGi szolgáltatás platformot?  Milyen problémát próbál a keretrendszer megoldani?  Egységes szoftver piac:  Korlátozott bináris szoftver portabilitás  A heterogén szoftver rendszerek fejlesztése komplex feladat  Konfigurációk kezelése, testreszabás,...  Az eszközön lévő szoftverek életciklusának kezelése

7 6 A szoftver komplexitása Productivity Complexity and Size Assembly Structured Programming Service Oriented Programming

8 7 Szolgáltatás orientált architektúra  Különítsük el a megegyezést az implementációtól  Alternatív implementációk lehetősége  Az implementációk dinamikus fellelése és csatolása  Szarződés alapú (interfész)  A komponensek újrahasznosíthatóak Service Contract Component provides uses

9 8 Keretrendszer  Lehetővé teszi az alkalmazások számára egy közös Java VM használatát  Osztálybetöltés  Izoláció/Biztonság  Kommunikáció és Együttműködés az alkalmazások között  Életciklus menedzselése  Szabály mentes  A szabályokat a csomagok határozzák meg  Az API teljesen önmenedzselő Operating System JavaVM JavaVM The Application Crypto-graphyUPnPDirec-tories Imaging Mail MediaFWSQL GUI Distri-buted CommPortsSecurityTCP/IP JTAPI3DWebServerMath SpeechBlue-toothXMLUSB Operating System JavaVM JavaVM JavaVM JavaVM JavaVM JavaVM JavaVM System Class Libraries OSGi OSGi OSGi OSGi Application Application Application Application Application Application Application Library

10 9 Rétegek

11 Rétegek közötti együttműködés 10

12 11 Futtató környezet  Az OSGi APIs a J2SE és J2ME CDC csak egy részét használja  OSGi Minimum EE  A legtöbb profillal megegyezik  A biztonság nem kötelező CLDC/ MIDP J2SE CDC/FP OSGi Min.

13 Biztonsági réteg  Tulajdonságai  Opcionális  Finomhangolható  Menedzselhető  A Java biztonsági architektúrára épül  Kód azonosítás  Lokáció alapján  Aláíró alapján  Opcionális biztonság  checkPermission  … 12

14 Digitális bizonyítvány alapú jogosultságkezelés 13

15 14 Modul réteg  A szabványos Java környezet nem biztosítja a megfelelő eszközöket a verziók kezelésére  Megoldás  Specializált osztálybetöltők (Jboss, NetbEans, …)  OSGi  Az alkalmazás könyvtárakat batyuba kötni (bundle)  Az osztálybetöltés modularizált  A sima Java-ban a Class Path mint sorbarendezett lista  Védelem  A sima Java nem tud védelmet nyújtani  Verziókezelés  A sima Java nem tudja ugyanannak a csomagnak különböző verzióit kezelni batyu

16 15 Keretrendszer entitások OSGi Keretrendszer A Batyu {} = szolgáltatás, java interfész B Batyu {} C Batyu {}

17 16 Batyuk  A batyu egy alkalmazás  Mint a Windows EXE fájl  Egy jar fájl  A batyu regisztrálhat szolgáltatásokat  A szolgáltatás Java interfésszel van specifikálva és több batyu is megvalósíthatja  A szolgáltatások a batyu életciklusától függenek  Keresések segítségével lehet a megfelelő szolgáltatásokat megtalálni  Lekérdező nyelv

18 17 Mi a Batyu?  A Batyu tartalma (általában egy JAR fáljban):  Leíró (Mainfest)  Kód  Erőforrások  A Keretrendszer:  Olvassa a batyu leíróját  Telepíti a kódot és az erőforrásokat  Feloldja a függőségeket  Futásidőben:  Meghívja a batyu aktiválót, hogy elindítsa a batyut  Kezeli a java classpath-ot  Kezeli a szolgáltatás függőségeket  Meghívja a batyu aktivátort, hogy leállítsa a batyut A Batyu {}

19 18 Hello World  A Leíró ( META-INF/MANIFEST.MF) is varázslóval készíthető (pl.: Eclipse)  Notice:  Bundle-Activator (az életciklus esményekre hívódik meg)  Import-Package (függőségek) Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Helloworld Plug-in Bundle-SymbolicName: helloworld Bundle-Version: 1.0.0 Bundle-Localization: plugin Bundle-Activator: helloworld.Activator Import-Package: org.osgi.framework;version="1.3.0" META-INF/MANIFEST.MF

20 19 Hello World  A kód vázat is gyárthatjuk varázslóval package helloworld public class HelloWorld implements BundleActivator { public void start( BundleContext context) throws Exception{ System.out.println( "Hello world!!"); } public void stop( BundleContext context) throws Exception { System.out.println( "Goodbye world!!"); } } HelloWorld.java

21 20 Osztályútvonal kezelése  A Java alkalmazás csomagokba helyezett osztályokból áll  A Java keretrendszer az osztályokat a különböző jar fáljokból tölti be  Ezek általában a CLASSPATH környezeti változóban vannak specifikálva  Az OSGi keretrendszer az osztálybetöltők hálózatát kezeli.  A leíró fejlécekkel paraméterezhetők  A batyuk közötti függőségekre a keretrendszer kezeli  Képes a batyuk szükség szerinti betöltésére

22 21 OSGi fügőség feloldás Bundle A Export org.osgi.service.log com.ibm.service.log com.ibm.j9 Import org.osgi.service.http javax.servlet.http Framework org.osgi.framework org.osgi.service.http Bundle B Export ericsson.osgi javax.servlet javax.servlet.http org.osgi.service.log Import org.osgi.service.http org.osgi.service.log B resolved A resolved

23 22 Csomag vagy Batyu függőségek?  Az OSGi mindkét megoldást támogatja  A Batyu függőség egyszerű de olyan csomagokat is importál amikre nincs szükség, nehézkesebb a verziózás r r s r q p Require-Bundle Import-Package

24 Osztálybetöltés  Boot osztály útvonal (java.*)  Keretrendszer osztály útvonal  Batyu tér 23

25 Példa 24

26 25 Együttműködési modell  Az OSGi több mint Applet, MIDlet, Xlet futtaó környezet  A Batyuk együttműködési lehetőségei:  Szolgáltatás objektumok  Csomag megosztás  A dinamikus szolgáltatás tár segítségével a batyu meg tudja keresni és nyomon tudja követni a számára szükséges szolgáltatásokat  A keretrendszer kezeli ezt az együttműködést  Függőségek, biztonság

27 26 Együttműködési modell Batyu JAVA Operációs rendszer Hardver OSGi Kertrendszer Szolgáltatás tár csomagko csomagok

28 27 Életciklus réteg  A Rendszer (System) batyu az OSGi kererendszert reprezentálja  Egy API-t biztosít a batyuk kezelésére  Telepítés  Feloldás  Indítás  Leállítás  Lekérdezés  Frissítés  Telepítés törlése  A modul rétegen alapul Bundle X Bundle X-v2 Bundle B bundle M Bundle A System bundle

29 28 Életciklus réteg  A batyut a Bundle Activator osztály segítségével indtíják  A leíró fejlécében hivatkozunk erre az osztályra  Az interfész metódusai  Start: Inicializál és azonnal visszatér  Stop: takarítás  Az akitvátor megkapja a batyu környezetet amely segítségével hozzáfér a keretrendszer erőforrásaihoz INSTALLED RESOLVED UNINSTALLED ACTIVE STOPPING STARTING start stop

30 Entitások  Bundle  BundleContext  BundleActivator  BundleEvent  FrameworkEvent  BundleListener  Synchronous Bundle Listener  FrameworkListener  BundleException  SystemBundle 29

31 30 Szolgáltatás réteg  VM-en belüli szolgáltatás modell  Szolgáltatások felderítése, állapotuk figyelése  Csatlakozás szolgáltatásokhoz  programból,  Alapértelmezett szabályokkal  Telepítő konfigurációval  Nem hagyományos SOA  VM-en belüli

32 31 Szolgáltatások  A szolgáltatás egy a kerterendszerbe regisztrált objektum  Java interfészként van regisztrálva  A batyu szolgáltatásokat regisztrálhat  A batyu szolgáltatásokat használhat  1..1  0..1  0..n  Dinamikus keresésel lehet szolgáltatásokat fellelni  A szolgáltatások bármikor eltűnhetnek! service bind register discover package org.osgi.service.log; import org.osgi.framework.ServiceReference; public interface LogService { public static final intLOG_ERROR= 1; public static final intLOG_WARNING= 2; public static final intLOG_INFO= 3; public static final intLOG_DEBUG= 4; public void log(int level, String message); public void log(int level, String message, Throwable exception); public void log(ServiceReference sr, int level, String message); public void log(ServiceReference sr, int level, String message, Throwable exception); }

33 32 Szolgáltatások  A keretrendszer szolgáltatástára minden batyunak elérhető  Különböző gyártó által létrehozott batyuk azonos interfészt is megvalósíthatnak  A felhasználónak nem látható az implementáció  Az operátor lecserélheti az egyes batyukat a működés megzavarása nélkül  Az OSGi definiál egy köteg szabványos szolgáltatást  A szolgáltatással kapcsolatos eseményekre felíratkozhatunk  A szolgáltatásoknak egyedi ID-je van  Jogosultságkezelés  Az Operátor kezeli  A szolgáltatásoknak tulajdonságai vannak  Lekérdező nyelv a megfelelő szolgáltatás fellelésére  A batyuk frissíthetik a tulajdonságokat

34 33 Szolgáltatások manipulálása  A BundleContext segítségével hozzáférhetünk a szolgáltatásokat manipuláló metódusokhoz  A szolgáltatás regisztrációt a ServiceRegistration objektumok kezelik  Segítségükkel módosíthatjuk a paraméteket, vagy eltávolíthatjuk a szolgáltatást  A szolgáltatás referenciák segítségével hozzáférhetünk a szolgáltatáshoz és annak tulajdonságaihoz is.  A szolgáltatásokhoz a getService metódussal férünk hozzá, az ungetService metódussal tudjuk elengedni ServiceRegistration registerService( String clss, Object srvc, Dictionary prprts) ServiceReference[] getServiceReferences( String clss, String fltr) Object getService( ServiceReference reference) boolean ungetService( ServiceReference rfrnc);

35 Spring  Rétegelt Java/J2EE alkalmazás keretrendszer Rod Johnoson kódja alapján („Expert One-one-One J2EE Design and Development” Wrox, 2002)  Nyílt forrású 34

36 A Spring célja  A J2EE-nek egyszerűbbnek kell lennie  Az OO tervezés fontosabb mint az implementációs technológia pl.: J2EE.  A kód tesztelhetősége kritikus (ebben segít a spring)  A Spring nem versenyzik, hanem kiegészíti a meglévő jó megoldásokat

37 Spring  Egy könnyűsúlyú a web alkalmazások minden rétegét megcímező keretrendszer.  Megjelenítés réteg – A Struts-hoz hasonló de attól többet nyújtó MVC keretrendszer.  Business layer – Könnyűsúlyú IoC tároló AOP támogatással (a beépített aspektusokat is ideértve)  Perzisztenica réteg – DAO minta a népszerű ORMs és JDBC támogatására  Egyszerűsíti a perzisztencia keretrendszereket JDBC  Kiegészítő: Nem helyettesíti a perzisztencia kerterndszereket  Segít a középréteg szervezésében  Csökkenti a kód mennyiségét, gyorsítja a fejlesztést

38 Spring (folytatás)  A Spring egy hordozható, viszonylag kényszer mentes keretrendszer.  POJO alapú  A programozó az újrahasznosításra koncentrálhat  Beépített szolgáltatások (aspektusok) pl.: tranzakció kezelés  A legtöbb üzleti objektum független a spring keretrendszertől

39 Három fő pillér  IoC konténer  Setter és konstruktor alapú függőség injektálás  Nem kötődik egy alkalmazásszerverhez  Előtérbe helyezi az OO tervezést.  A konténer által kezelt babok újrahasznosíthatóak, el vannak választva az üzleti logikától  AOP  Dynamic AOP Proxy objektumot használ az objektumokon átívelő szolgáltatások biztosítására  Újrahasznosítható objektumok  Integrálódik az IoC környezettel  AspectJ támogatás  Spring API

40 Inversion of Control  Függőség inyektálás  A babok a konstruktor argumentumaik, vagy tulajdonságaik segítségével definiálja függőségeiket  A konténer futásidőben biztosítja a beinyektálást  “Nem szólj az idegenekhez”, „Ne, hívj, én hívlak”  Elválasztja az objektumok fellelését, létrehozását az üzleti logikától  Könnyű használni, újrahasznosítani  Könnyű a tesztelés

41 Nem-IoC / Dependency Injection

42 Nem-IoC Szolgáltatás Objektum public class OrderServiceImpl implements IOrderService { public Order saveOrder(Order order) throws OrderException{ try{ // 1. Create a Session/Connection object // 2. Start a transaction // 3. Lookup and invoke one of the methods in a // DAO and pass the Session/Connection object. // 4. Commit transaction }catch(Exception e){ // handle e, rollback transaction, //cleanup, // throw e }finally{ //Release resources and handle more exceptions }

43 IoC / Függőség inyektálás

44 IoC Szolgáltatás objektum public class OrderSpringService implements IOrderService { IOrderDAO orderDAO; public Order saveOrder(Order order) throws OrderException{ // perform some business logic… return orderDAO.saveNewOrder(order); } public void setOrderDAO(IOrderDAO orderDAO) { this.orderDAO = orderDAO; }

45 Spring bab definició  A bab osztály a BeanFactory által leírt osztály aktuális implementációja  Bab minták – DAO, DataSource, Transaction Manager, Persistence Managers, Service objects, etc  A Spring konfiguráció tartalmazza az implementációt a kódunknak az interfészekhez kell szólnia.  A bab viselkedése:  Singleton vagy prototípus  Automatikus huzalozás  Inicilaizáló és destruktor metódusok  init-method  destroy-method  A babok tulajdonságait paraméterezhetően be lehet állítani.

46 Egyszerű Spring Bab  10  public class OrderBean implements IOrderBean{ … public void setMinimumAmountToProcess(double d){ this. minimumAmountToProcess = d; } public void setOrderDAO(IOrderDAO odao){ this.orderDAO = odao; } }

47 Spring BeanFactory  BeanFactory a Spring keretrendszer alapja  Könnysúlyú tároló amely betölti és menedzseli a babokat  Delaratívan lehet konfigurálni XML állományok segítségével, itt mondjuk meg azt is, hogy a különböző babok hogyan kapcsolódnak  Tudja, hogy hogyan kezelje a singelton és prototípus babokat  Az életciklus kezelő metódusokért is felelős  A megfelelő babokba beinyektálja a függőségeket  Injects dependencies into defined beans when served  Segítségével mellőzhetjük a singelton-ok és factory-k használatát

48 Spring ApplicationContext  A Spring ApplicationContext segítségével hozáférhetünk a BeanFactory-ban konfigurált objektumokhoz  Az ApplicationContext kiterjeszti a BeanFactory-t  Olyan szolgáltatásokat biztosít mint a belső üzenetküldés  Fájl alapú erőforrások általános kezelése is egy szolgáltatása  Néhány mód a konfigurációra:  XMLWebApplicationContext – Web alkalmazáshoz konfiguráljuk.  ClassPathXMLApplicationContext – önnáló XML alkalmazás kontextus  FileSystemXmlApplicationContext  Nem kell Service Locator-okat írnunk

49 Spring AOP

50 AOP  Kiegészíti az OO programozást  Az alapvető üzleti problémák vs. Az átmetsző vállalati problémák  Az AOP komponensei  Aspect – a keresztülívelő problémák modulba foglalásának alapja  Join point – jól definiált pontok a program folyamban  Pointcut –join point szűrő a betoldás futásánák meghatározására  Advice – egy küdrész ami a pointcut által meghatározott részen fut  Weaving – Fordítás, vagy futásidőben a megfelelő helyekre betoldja a megfelelő kódot.  Az EJB-ben található deklaratív megoldások egy alternatívája  Aspektusok a kód változtatása nélkül hozzáadhatóak és elvehetőek

51 Spring AOP  Az aopalliance szövetség által definiált interfészekre építő keretrendszer  Az aspektusok Java nyelvben vannak megvalósítva. Nem kell pointcut lekérdező nyelvet tanulni  A Spring aspektusok az IoC konténerben paraméterezhetőek  A konténerből kapott objektumok transzparens módon szabhatóak  A Spring AOP sok kész aspektust biztosít (tranzakció kezelés, naplózás, …)

52 Spring AOP  Az alábbi tanácsokat támogatja:  Metódus előtt  A metódus visszatérése után  throws tanács  Körül tanács  Az interceptorokat és a tanácsokat láncolhatjuk precedencia alapján  Az aspektusok futás időben vannak szőve.

53 Spring AOP körbe tanács példa public class PerformanceMonitorDetailInterceptor implements MethodInterceptor { protected final Log logger = LogFactory.getLog(getClass()); public Object invoke(MethodInvocation invocation) throws Throwable { String name = invocation.getMethod().getDeclaringClass().getName() + "." + invocation.getMethod().getName(); StopWatch sw = new StopWatch(name); sw.start(name); Object rval = invocation.proceed(); sw.stop(); logger.info(sw.prettyPrint()); return rval; }

54 Folytatás <bean id="perfMonInterceptor" class= "com.meagle.service.interceptor.PerformanceMonitorDetailInterceptor"/> <bean id="performanceAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">.*find.*.*save.*.*update.*

55 AOP Szövés

56 A következő alkalmazás tartalma  Alkalmazás szerverek és ezek szolgáltatásai  EAR állományok  JMX  Példák:  Jboss, WebSphere 55


Letölteni ppt "Programrendszerek Fejlesztése 7/67/6 1 Tartalom  OSGI  Bevezető  A cél környezet kezelése  OSGI alapok  Komponensek  Szolgáltatások  Spring "

Hasonló előadás


Google Hirdetések