Fejlett Programoz�si Technik�k 2. - PowerPoint

W
Shared by: HPVVgUjy
Categories
Tags
-
Stats
views:
5
posted:
6/20/2012
language:
pages:
55
Document Sample
scope of work template
							    Programrendszerek Fejlesztése

                                7/6



1
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
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 …




                                             3
OSGi tagok

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


4
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




                                                        5
A szoftver komplexitása


                            Service Oriented Programming
Productivity




                            Structured
                            Programming

               Assembly




                          Complexity and Size

                                                           6
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                       Service Contract
       Az implementációk dinamikus                         provides
        fellelése és csatolása            Component

       Szarződés alapú (interfész)
                                                                       uses
       A komponensek
        újrahasznosíthatóak




7
Keretrendszer

       Lehetővé teszi az alkalmazások
        számára egy közös Java VM                              Application
                                                     The Application
                                                              Application
        használatát                                         Application
                                                               Application
                                                          Application
                                                     Blue- Application
       Osztálybetöltés                  Speech                 XML
                                                     tooth Application
                                                                           USB
                                                            Library
       Izoláció/Biztonság                     OSGi
                                             OSGi               Web
                                           JTAPI
                                            OSGi       3D                 Math
       Kommunikáció és                  OSGi                  Server
                                                       The Application
                                                          Java
        Együttműködés az alkalmazások                   Java
                                                     Comm  VM
                                                       Java Security TCP/IP
                                            Mail
        között                                           VM
                                                     Ports
                                                        VM
                                            System Class Libraries
                                                          Java
       Életciklus menedzselése          Imaging
                                                     Media
                                                        Java    SQL
                                                                          Distri-
                                                      FW VM
                                                       Java               buted
                                                     JavaVM
       Szabály mentes                                VM
                                                        VM
                                          Crypto-              Direc-
                                                       Operating System GUI
            A szabályokat a csomagok                UPnP       System
                                                     Operating tories
                                          graphy Operating System
             határozzák meg                        Operating Java
                                                             System
                                                           Java
                                                              VM
       Az API teljesen önmenedzselő                        VM
                                                     Operating System
                                                    Operating System


8
Rétegek




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




10
Futtató környezet

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


                                                OSGi
                                                Min.

                                                       J2SE
                                           CDC/FP




11
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
Digitális bizonyítvány alapú jogosultságkezelés




  13
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)                           batyu
        Az osztálybetöltés modularizált
                                                                        batyu
              A sima Java-ban a Class Path mint sorbarendezett lista
        Védelem
              A sima Java nem tud védelmet nyújtani                                                  batyu
                                                                                         batyu
        Verziókezelés                                                   batyu
              A sima Java nem tudja ugyanannak a csomagnak
               különböző verzióit kezelni


                                                                                                  batyu
                                                                                 batyu




14
Keretrendszer entitások

              OSGi Keretrendszer

    A Batyu
       {}
                              B Batyu
                                 {}



               C Batyu                  = szolgáltatás, java interfész
                  {}


                                        15
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

                                                    16
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                                    A Batyu
        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




                                                               17
Hello World

   A Leíró ( META-INF/MANIFEST.MF) is
    varázslóval készíthető (pl.: Eclipse)   META-INF/MANIFEST.MF

   Notice:                                 Manifest-Version: 1.0
                                            Bundle-ManifestVersion: 2
     Bundle-Activator(az életciklus        Bundle-Name: Helloworld Plug-in
     esményekre hívódik meg)                Bundle-SymbolicName: helloworld
                                            Bundle-Version: 1.0.0
     Import-Package   (függőségek)         Bundle-Localization: plugin
                                            Bundle-Activator: helloworld.Activator
                                            Import-Package:
                                             org.osgi.framework;version="1.3.0"




                                                              18
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!!");
                                                  }
                                              }




                                                                  19
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




20
OSGi fügőség feloldás
       Framework
                org.osgi.framework
                org.osgi.service.http

       Bundle A
       Export org.osgi.service.log           A resolved
                com.ibm.service.log
                com.ibm.j9
       Import org.osgi.service.http
                javax.servlet.http
       Bundle B
       Export ericsson.osgi                  B resolved
                javax.servlet
                javax.servlet.http
                org.osgi.service.log
       Import org.osgi.service.http
                org.osgi.service.log



                                        21
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
                                                        p
                                                                   Import-Package
                                                        q
                                                        r                    r
                                                        s


                                                            Require-Bundle

                                                        r




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




    23
Példa




24
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




                                             25
Együttműködési modell

                    OSGi Kertrendszer


                        Szolgáltatás
                            tár
          Batyu                         Batyu
                      csomagko
                        csomagok



                       JAVA



                  Operációs rendszer



                         Hardver




                                                26
Életciklus réteg
    A Rendszer (System) batyu az
     OSGi kererendszert reprezentálja
    Egy API-t biztosít a batyuk
     kezelésére
                                                          System            bundle
         Telepítés                                       bundle              M
         Feloldás
         Indítás
         Leállítás                     Bundle
         Lekérdezés                      X
                                         X-v2

         Frissítés
         Telepítés törlése
    A modul rétegen alapul                                        Bundle
                                                 Bundle              B
                                                   A




27
É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    INSTALLED            STARTING
         Stop: takarítás
    Az akitvátor megkapja a batyu                                start
     környezetet amely segítségével
     hozzáfér a keretrendszer                        RESOLVED              ACTIVE
     erőforrásaihoz
                                                                               stop


                                                    UNINSTALLED           STOPPING




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

    29
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




                                                           30
Szolgáltatások                                                                 discover


                                                             bind                         register


        A szolgáltatás egy a kerterendszerbe regisztrált
         objektum
        Java interfészként van regisztrálva                         service
        A batyu szolgáltatásokat regisztrálhat
                                                            package org.osgi.service.log;
        A batyu szolgáltatásokat használhat                import
              1..1                                         org.osgi.framework.ServiceReference;
                                                            public interface LogService {
              0..1
                                                            public static final intLOG_ERROR= 1;
              0..n                                         public static final intLOG_WARNING= 2;
        Dinamikus keresésel lehet szolgáltatásokat         public static final intLOG_INFO= 3;
         fellelni                                           public static final intLOG_DEBUG= 4;
                                                            public void log(int level,
        A szolgáltatások bármikor eltűnhetnek!               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);
                                                            }




31
     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




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

        A szolgáltatásokhoz a getService          boolean ungetService(
         metódussal férünk hozzá, az                 ServiceReference rfrnc);

         ungetService metódussal tudjuk
         elengedni




33
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
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
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
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
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
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
Nem-IoC / Dependency Injection
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
  }
}
IoC / Függőség inyektálás
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;
}
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.
    Egyszerű Spring Bab
   <bean id=“orderBean” class=“example.OrderBean”
        init-method=“init”>
        <property
        name=“minimumAmountToProcess”>10</property>
        <property name=“orderDAO”>
          <ref bean=“orderDAOBean”/>
        </property>
    </bean>

   public class OrderBean implements IOrderBean{
        …
        public void
        setMinimumAmountToProcess(double d){
              this. minimumAmountToProcess = d;
        }
        public void setOrderDAO(IOrderDAO odao){
              this.orderDAO = odao;
        }
    }
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
    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
Spring AOP
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
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, …)
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.
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;
     }
 }
 Folytatás

<bean id="perfMonInterceptor"
  class=
  "com.meagle.service.interceptor.PerformanceMonitorDetailInterceptor"/>


<bean id="performanceAdvisor"
  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">


  <property name="advice">
           <ref local="perfMonInterceptor"/>
     </property>


     <property name="patterns">
           <list>
               <value>.*find.*</value>
               <value>.*save.*</value>
               <value>.*update.*</value>
           </list>
     </property>
</bean>
AOP Szövés
A következő alkalmazás tartalma
    Alkalmazás szerverek és ezek szolgáltatásai
    EAR állományok
    JMX
    Példák:
        Jboss, WebSphere




    55

						
Related docs
Other docs by HPVVgUjy
Maurizio Cinelli
Views: 11  |  Downloads: 0
Omschrijving lessen Chinees schrift
Views: 4  |  Downloads: 0
Dias nummer 1 - PowerPoint 9
Views: 12  |  Downloads: 0
TRU?NG THPT CHUY�N L� QU� ��N - DOC
Views: 6  |  Downloads: 0
15 don xin cap lai ban sao bang tot nghiep
Views: 40  |  Downloads: 0
CHARLES COHEN et al
Views: 2  |  Downloads: 0
Lista de Red de Lideres 03 03 2011
Views: 15  |  Downloads: 0
Danielson Reflection Teacher Tool 8 Domains
Views: 53  |  Downloads: 0
PROGRAMMA 2012_SINTESI_DOC
Views: 0  |  Downloads: 0