Programrendszerek Fejleszt - PowerPoint PPT Presentation

About This Presentation
Title:

Programrendszerek Fejleszt

Description:

Title: Fejlett Programoz si Technik k 2. Author: Vanda Last modified by: bilickiv Created Date: 2/1/2002 7:50:30 PM Document presentation format – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 56
Provided by: Van9158
Category:

less

Transcript and Presenter's Notes

Title: Programrendszerek Fejleszt


1
Programrendszerek Fejlesztése
  • 7/6

2
Tartalom
  • OSGI
  • Bevezeto
  • 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

3
Az OSGi platform
  • Egy Java keretrendszer távolról telepítheto
    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üttmuködo
  • 4.0 verzió www.osgi.org

4
OSGi tagok
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
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évo szoftverek életciklusának
    kezelése

6
A szoftver komplexitása
Productivity
Complexity and Size
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 lehetosége
  • Az implementációk dinamikus fellelése és
    csatolása
  • Szarzodés alapú (interfész)
  • A komponensek újrahasznosíthatóak

Service Contract
provides
Component
uses
8
Keretrendszer
  • Lehetové 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üttmukö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 önmenedzselo

9
Rétegek
10
Rétegek közötti együttmuködés
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ötelezo

CLDC/ MIDP
J2SE
CDC/FP
OSGi Min.
12
Biztonsági réteg
  • Tulajdonságai
  • Opcionális
  • Finomhangolható
  • Menedzselheto
  • 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

13
Digitális bizonyítvány alapú jogosultságkezelés
14
Modul réteg
  • A szabványos Java környezet nem biztosítja a
    megfelelo eszközöket a verziók kezelésére
  • Megoldás
  • Specializált osztálybetöltok (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özo verzióit kezelni

batyu
batyu
batyu
batyu
batyu
batyu
batyu
15
Keretrendszer entitások
OSGi Keretrendszer
A Batyu
B Batyu
C Batyu
szolgáltatás, java interfész
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 megfelelo
    szolgáltatásokat megtalálni
  • Lekérdezo nyelv

17
Mi a Batyu?
  • A Batyu tartalma (általában egy JAR fáljban)
  • Leíró (Mainfest)
  • Kód
  • Eroforrások
  • A Keretrendszer
  • Olvassa a batyu leíróját
  • Telepíti a kódot és az eroforrásokat
  • Feloldja a függoségeket
  • Futásidoben
  • Meghívja a batyu aktiválót, hogy elindítsa a
    batyut
  • Kezeli a java classpath-ot
  • Kezeli a szolgáltatás függoségeket
  • Meghívja a batyu aktivátort, hogy leállítsa a
    batyut

A Batyu
18
Hello World
  • A Leíró ( META-INF/MANIFEST.MF) is varázslóval
    készítheto (pl. Eclipse)
  • Notice
  • Bundle-Activator (az életciklus esményekre
    hívódik meg)
  • Import-Package (függoségek)

META-INF/MANIFEST.MF
  • 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.frameworkversion"1.3.0"

19
Hello World
  • A kód vázat is gyárthatjuk varázslóval

HelloWorld.java
  • 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!!")

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özo
    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öltok
    hálózatát kezeli.
  • A leíró fejlécekkel paraméterezhetok
  • A batyuk közötti függoségekre a keretrendszer
    kezeli
  • Képes a batyuk szükség szerinti betöltésére

21
OSGi fügoség feloldás
Framework org.osgi.framework
org.osgi.service.http
Bundle A Export org.osgi.service.log
com.ibm.service.log com.ibm.j9 Import
org.osgi.service.http javax.servlet.http
A resolved
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
22
Csomag vagy Batyu függoségek?
  • Az OSGi mindkét megoldást támogatja
  • A Batyu függoség egyszeru de olyan csomagokat is
    importál amikre nincs szükség, nehézkesebb a
    verziózás

p
Import-Package
q
r
r
s
Require-Bundle
r
23
Osztálybetöltés
  • Boot osztály útvonal (java.)
  • Keretrendszer osztály útvonal
  • Batyu tér

24
Példa
25
Együttmuködési modell
  • Az OSGi több mint Applet, MIDlet, Xlet futtaó
    környezet
  • A Batyuk együttmuködési lehetosé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üttmuködést
  • Függoségek, biztonság

26
Együttmuködési modell
OSGi Kertrendszer
Batyu
Batyu
JAVA
Operációs rendszer
Hardver
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 M
System bundle
Bundle X
Bundle X-v2
Bundle B
Bundle A
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
    eroforrásaihoz

INSTALLED
STARTING
start
RESOLVED
ACTIVE
stop
UNINSTALLED
STOPPING
29
Entitások
  • Bundle
  • BundleContext
  • BundleActivator
  • BundleEvent
  • FrameworkEvent
  • BundleListener
  • Synchronous Bundle Listener
  • FrameworkListener
  • BundleException
  • SystemBundle

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íto konfigurációval
  • Nem hagyományos SOA
  • VM-en belüli

31
Szolgáltatások
discover
service
register
bind
  • 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 eltunhetnek!

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)
32
Szolgáltatások
  • A keretrendszer szolgáltatástára minden batyunak
    elérheto
  • Különbözo 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
    mukö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érdezo nyelv a megfelelo szolgáltatás
    fellelésére
  • A batyuk frissíthetik a tulajdonságokat

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)
34
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ú

35
A Spring célja
  • A J2EE-nek egyszerubbnek kell lennie
  • Az OO tervezés fontosabb mint az implementációs
    technológia pl. J2EE.
  • A kód tesztelhetosége kritikus (ebben segít a
    spring)
  • A Spring nem versenyzik, hanem kiegészíti a
    meglévo jó megoldásokat

36
Spring
  • Egy könnyusúlyú a web alkalmazások minden rétegét
    megcímezo keretrendszer.
  • Megjelenítés réteg A Struts-hoz hasonló de
    attól többet nyújtó MVC keretrendszer.
  • Business layer Könnyusúlyú IoC tároló AOP
    támogatással (a beépített aspektusokat is
    ideértve)
  • Perzisztenica réteg DAO minta a népszeru ORMs
    és JDBC támogatására
  • Egyszerusíti a perzisztencia keretrendszereket
    JDBC
  • Kiegészíto 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

37
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
    keretrendszertol

38
Három fo pillér
  • IoC konténer
  • Setter és konstruktor alapú függoség injektálás
  • Nem kötodik egy alkalmazásszerverhez
  • Eloté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ívelo szolgáltatások biztosítására
  • Újrahasznosítható objektumok
  • Integrálódik az IoC környezettel
  • AspectJ támogatás
  • Spring API

39
Inversion of Control
  • Függoség inyektálás
  • A babok a konstruktor argumentumaik, vagy
    tulajdonságaik segítségével definiálja
    függoségeiket
  • A konténer futásidoben 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önnyu használni, újrahasznosítani
  • Könnyu a tesztelés

40
Nem-IoC / Dependency Injection
41
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

42
IoC / Függoség inyektálás
43
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

44
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éterezhetoen be lehet
    állítani.

45
Egyszeru Spring Bab
  • ltbean idorderBean classexample.OrderBean
    init-methodinitgt ltproperty
    nameminimumAmountToProcessgt10lt/propertygt ltpro
    perty nameorderDAOgt ltref beanorderDAOBean
    /gt lt/propertygtlt/beangt
  • public class OrderBean implements
    IOrderBean public void setMinimumAmountToPro
    cess(double d) this. minimumAmountToProcess
    d public void setOrderDAO(IOrderDAO
    odao) this.orderDAO odao

46
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özo babok hogyan kapcsolódnak
  • Tudja, hogy hogyan kezelje a singelton és
    prototípus babokat
  • Az életciklus kezelo metódusokért is felelos
  • A megfelelo babokba beinyektálja a függoségeket
  • Injects dependencies into defined beans when
    served
  • Segítségével mellozhetjük a singelton-ok és
    factory-k használatát

47
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 belso
    üzenetküldés
  • Fájl alapú eroforrá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

48
Spring AOP
49
AOP
  • Kiegészíti az OO programozást
  • Az alapveto üzleti problémák vs. Az átmetszo
    vállalati problémák
  • Az AOP komponensei
  • Aspect a keresztülívelo problémák modulba
    foglalásának alapja
  • Join point jól definiált pontok a program
    folyamban
  • Pointcut join point szuro 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ásidoben a megfelelo
    helyekre betoldja a megfelelo 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 elvehetoek

50
Spring AOP
  • Az aopalliance szövetség által definiált
    interfészekre építo keretrendszer
  • Az aspektusok Java nyelvben vannak megvalósítva.
    Nem kell pointcut lekérdezo nyelvet tanulni
  • A Spring aspektusok az IoC konténerben
    paraméterezhetoek
  • A konténerbol kapott objektumok transzparens
    módon szabhatóak
  • A Spring AOP sok kész aspektust biztosít
    (tranzakció kezelés, naplózás, )

51
Spring AOP
  • Az alábbi tanácsokat támogatja
  • Metódus elott
  • 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 idoben vannak szove.

52
Spring AOP körbe tanács példa
  • public class PerformanceMonitorDetailInterceptor
    implements MethodInterceptor
  • protected final Log logger LogFactory.getLog(ge
    tClass())
  • public Object invoke(MethodInvocation
    invocation) throws Throwable
  • String name
  • invocation.getMethod().getDeclaringClass().getN
    ame()
  • "."
  • invocation.getMethod().getName()
  • StopWatch sw new StopWatch(name)
  • sw.start(name)
  • Object rval invocation.proceed()
  • sw.stop()
  • logger.info(sw.prettyPrint())
  • return rval

53
Folytatás
  • ltbean id"perfMonInterceptor"
  • class
  • "com.meagle.service.interceptor.PerformanceMonito
    rDetailInterceptor"/gt
  • ltbean id"performanceAdvisor"
  • class"org.springframework.aop.support.RegexpMet
    hodPointcutAdvisor"gt
  • ltproperty name"advice"gt
  • ltref local"perfMonInterceptor"/gt
  • lt/propertygt
  • ltproperty name"patterns"gt
  • ltlistgt
  • ltvaluegt.find.lt/valuegt
  • ltvaluegt.save.lt/valuegt
  • ltvaluegt.update.lt/valuegt
  • lt/listgt
  • lt/propertygt

54
AOP Szövés
55
A következo alkalmazás tartalma
  • Alkalmazás szerverek és ezek szolgáltatásai
  • EAR állományok
  • JMX
  • Példák
  • Jboss, WebSphere
Write a Comment
User Comments (0)
About PowerShow.com