Esettanulmány J2EEEJB

Document Sample
Esettanulmány J2EEEJB Powered By Docstoc
					Esettanulmány: J2EE/EJB




   Szabó Dániel
                  Elöljáró
●   J2EE/EJB és története
●   J2EE architektúra és megvalósítás
●   Enterprise Java Beans komponens orientált
    architektúra és megvalósítás.
●   Példa
●   Performancia
                      Technikák:
●   J2EE (Java 2 Enterprise Edition): JSP,Java
    Servlet, EJB...
●   EJB (Enterprise Java Beans):előregyártott vagy
    magunk írta komponensekből összerakni az alkalmazást.
●   CORBA (Common Object Request Broker):
    Objektum menedzser. Híd az alkalmazások közt.
●   RMI (Remote Machine Interface): Sun saját távoli
    objektum hívója. Minden JVM-ben.
●   .NET
          Történeti áttekintés:
●   1970 évek INTERNET
●   1980 igény egyszerű kliens-szerver
    technológiára.
●   1990 OMG: CORBA
●   1990 évek vége java RMI. Harc az e-paicért.
    Internet nem tipikus hálózat
●   Kiszámíthatatlan a forgalom.
●   Extrém ingadozások.
●   Más igények.
●   Pl. vizsgajelentkezés,nagy sportesemény:
    1999: wimbledon: 1 milliárd letöltés
    (420e/nap, 7e/s)
    Web alapú programok igényei
●   Stabilitás: Felkészülés sok lehetőségre.
●   Rendelkezésre állás: 24 órás hozzáférés.
    Ritka leállások.
●   Biztonság: Illetéktelen felhasználók
    kizárása.
●   Használhatóság: más más kontextus.
●   Hatékonyság: Erőforrások kihasználtsága.
●   Egyre növekvő igények. Internet csak bővül
    és bővül!
         EJB – web alkalmazás
●   Komponens alapú arhitektúrát ad Java
    nyelven. Előregyártott elemekből
    alkalmazást.
●   Könnyen használható. Alacsony szint
    kiiktatható. A lényegre lehet koncentrálni.
    Nincs felesleges idő/erőforrás használat.
        EJB és komponenesek
●   Komponensek összehangolása futási időben.
●   Együttműködés: Java API -val.
●   Együttműködés: nem Java applikációkkal
●   Együttműködés: CORBA-val.

●   Lényeg:Együttműködés. Akár különböző
    nyelven írt programok mint komponensek!
            Igények és J2EE
      „Írd megy egyszer, futtasd bárhol!” SUN
                       filozófia
●   Hordozhatóság:
●   Kiegyensúlyozottság:
●   Szabványosítás:
●   Átlátszóság:
●   Együttműködés: más komponensek, nyelvek.
●   Kiterjeszhetőség: más technológiákkal.
J2EE multi-
tier
architecture
                            Részek:
●   Java Messaging Service (JMS): aszinkron üzenet küldő
●   Java Naming and Directory Interface (JNDI): Referenciákat kezeli
    (kliens szerver) pl JDBC driver helye.
●   Java Transaction Service (JTS):tranzakció kezelés. (trenzakciók véget
    érnek, sikeresek)
●   J2EE Connector Architecture (JCA): Architektúra szabvány leiíró a
    kapcsolatokhoz. Része: Enterprise Resource Planning (ERP) és Customer
    Relationship Management (CRM)
●   Client Access Services COM Bridge: COM és J2EE integráció
●   RMI over IIOP: (Internet Inter-ORB Protocol (IIOP)) CORBA-hoz
    kulcs.
●   Java Database Connectivity (JDBC): Relációs adatbázis csatoló.
             EJB arhitektúra




●   EJB konténer: menedzseli és futatja a
    JB-ket.
              EJB típusok
1.1 EJB:
● Periódus (Session) beans: kapcsolat

  orientált.
    - Alapos (stateful): Megtartunk információt.
  Kliensnek hivatkozása is lehet egy beanre.
    - Hontalan(stateless): Információ vátltás
  után nem tartunk meg információt. Kliensnek
  nincs referenciája beanekre. Gyorsabb és
  hatékonyabb. Nem mindig használható.
                EJB típusok 2.
Entitás (entity) beans: adat orientált.
●   Konténer menedzselt állandó ~(container-managed
    persistence ~): Rácsatlakoznak valami állandó
    adatforrásra pl adatbázis. Az adatforráshoz nem kell
    külön kód.
●   Bean menedzselt állandó ~(bean-managed persistence
    ~): Nem képes bizonyos funkciókra az adatforrás, de ez
    implementálja/szimulálja őket. pl JDBC. Több művelet,
    lassabb. Pl adatbázis műveletek 85% olvasás.
        EJB: követelmények és
            megvalósítás
●   Megbízhatóság: Beépített hiba detektáló és
    listázó.
●   Kiegyensúlyozottság: Implementáció a
    programozótól függ, de adottak egy adott
    bean követelményei.
●   Programozhatóság: Adott az összes java
    eszköz. Széles repertoár.
●   Fejleszthetőség: Elemekből könnyen. Java-
    val együtt fejlődik.
●   Kiterjeszthetőség: Könnyen integrálható és
    integrálhatók más java technológiák a
    szabványnak hála.
       EJB: követelmények és
           megvalósítás2
●   Átlátszóság: Csak a fogadó és a küldő
    interfészek vannak definiálva a a többi
    mellékes.
●   Együttműködés: Más technológiákkal, pl
    CORBA.
●   Hatékonyság: JVM garantálja.
●   Hordozhatóság: Komponens technológia
    miatt.
●   Biztonság: Számos lehetőség a JAVA-ban.
●   Felhasználhatóság: gyakorlatilag bárhol.
             EJB programozása
●   Interfészek: helyi (home),távoli(remote)

public interface BrokerHome extends EJBHome
 {
  /*
   * This method creates the EJB Object.
   *
   * @return The newly created EJB Object.
   */
  Broker create() throws RemoteException, CreateException;
 }
                  EJB távoli interfész

public interface Broker extends EJBObject
{
 // Return the newly created account number
 public int newAccount(String sub_name, String sub_address, int
    sub_credit) throws RemoteException, SQLException;
 public QueryResult queryStockValueByID(int stock_id)
    throws RemoteException, SQLException;
 public void buyStock(int sub_accno, int stock_id, int amount)
    throws RemoteException, SQLException, TransDenyException;
 public void sellStock(int sub_accno, int stock_id, int amount)
    throws RemoteException, SQLException, TransDenyException;
 public void updateAccount(int sub_accno, int sub_credit)
    throws RemoteException, SQLException;
 public Vector getHoldingStatement(int sub_accno,int start_
    stock_id) throws RemoteException, SQLException;
}
              példa:EJB kliens kód

Broker broker =null;

//     find the home interface
Object _h = ctx.lookup("EntityStock.BrokerHome");
BrokerHome home = (BrokerHome)
   javax.rmi.PortableRemoteObject.narrow(_h, BrokerHome.class);
//     Use the home interface to create the Broker EJB Object
broker = home.create();
//     execute requests at the broker EJB
broker.updateAccount(accountNo, 200000);
broker.buyStock(accountNo, stockID, 5000);

//   we're finished ...
broker.remove();
           Példa: updateAccount
public void updateAccount(int sub_accno, int sub_credit)
 throws RemoteException
{
 try {
   Account account = accountHome.findByPrimaryKey
     (new AccountPK(sub_accno));
   account.update(sub_credit);
 }
 catch (Exception e) {
    throw new RemoteException(e.toString());
 }
}
              Példa: Account bean
public interface AccountHome extends EJBHome
{
 /*
  * This method creates the EJB Object.
  *
  * @param sub_name The name of the subscriber
  * @param sub_address The address of the subscriber
  * @param sub_credit The initial credit of the subscriber
  *
  * @return The newly created EJB Object.
  */
 public Account create(String sub_name, String sub_address,
    int sub_credit) throws CreateException, RemoteException;
 /*
  * Finds an Account by its primary Key (Account ID)
  */
 public Account findByPrimaryKey(AccountPK key)
    throws FinderException,RemoteException;
}
          Account bean folytatás
public interface Account extends EJBObject
{
 public void update(int amount) throws RemoteException;
 public void deposit(int amount) throws RemoteException;
 public int withdraw(int amount) throws AccountException,
     RemoteException;
 // Getter/setter methods on Entity Bean fields
 public int getCredit() throws RemoteException;
 public String getSubName() throws RemoteException;
 public void setSubName(String name) throws RemoteException;
}
public class AccountBean implements EntityBean
{
 // Container-managed state fields
 public int sub_accno;
 public String sub_name;
 public String sub_address;
 public int sub_credit;
 // lots missing ...
 public void update(int amount)
 {
     sub_credit = amount;
 }}
                    Leírás:
●   Szükséges tudni a bean tulajdonságát: pl.
    interfészek, szükséges erőforrások(jdbc).
●   Ennek is szabványosnak kell lennie: XML
●   Neve:Besorolás leíró (Deployment description )
          Broker besorolás leírója
<ejb-jar>
<enterprise-beans>
   <session>
     <ejb-name>EntityStock.BrokerHome</ejb-name>
     <home>j2ee.entitystock.BrokerHome</home>
     <remote>j2ee.entitystock.Broker</remote>
     <ejb-class>j2ee.entitystock.BrokerBean</ejb-class>
     <session-type>Stateless</session-type>
     <transaction-type>Container</transaction-type>
   </session>
</enterprise-beans>
<assembly-descriptor>
   <container-transaction>
     <method>
       <ejb-name>EntityStock.BrokerHome</ejb-name>
       <method-intf>Remote</method-intf>
       <method-name>*</method-name>
     </method>
     <trans-attribute>Required</trans-attribute>
   </container-transaction>
</assembly-descriptor>
</ejb-jar>
             Besorolás leíró
●   Hordozhatóság: XML formátum. Különböző
    platformokra az igényeit lehet jelezni.
●   Módosíthatóság: XML jól szeparált,
    könnyen módosítható.
●   Kiegyensúlyozottság: XML nem okoz
    meglepetéseket.
●   Átlátszóság: Az XML-ben nincs
    implementáció.
               Kérdések
Felmerülnek a komponens alapú technológia
  alapvető kérdései:
● Melyik elemet használjam? Melyik a legjobb

  MOST nekem?
● Performanciálisan és komplexitást nézve

  melyik?
Speciálisan EJB kérdések:
● Alapos vagy hontalan ? (stateful or

  statless?).
● Entitás bab vagy nem?
          További kérdések:
Szerver oldali réteg: teljesítmény növelése a
 szoftveren kívül.
     - vertikális. Meglévő gép bővítése:
     - horizontális: Erősebb gép beszerzése.
     - több „kisebb” gép hálózatban. (növelt redundancia és
       ár/érték arány)
     - Adatbázis kapcsolat menedzsment. (Erőforrásigényes
       1 kapcsolat bontása/ kialakítása/ fenntartása)
     - Jó operációs rendszer.
     - JVM optimalizálása. Heap méret vs Garbage
       collector.
              Még néhány szó:
●   Most(2002 óta) V1.4: csak kisebb változások:
    XML, prioritáskezelés, szemétgyűjtés
    javítása.
●   Komponens lapú fejlesztő környezetek: Sun,
    IBM, a Borland, a Symantec , NETBEANS
●   http://java.sun.com/developer/onlineTraining/Beans/EJB
    Tutorial/

				
DOCUMENT INFO
Shared By:
Stats:
views:43
posted:2/1/2010
language:Hungarian
pages:28