Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Technologie Enterprise Java Beans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213

Podobné prezentace


Prezentace na téma: "Technologie Enterprise Java Beans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213"— Transkript prezentace:

1 Technologie Enterprise Java Beans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz

2 Enterprise Java Beans2 Obsah přednášky Popis technologie EJB J2EE aplikace Typy komponent Entity Beans Session Beans Message-Driven Beans Java Messaging Service (JMS) Závěr

3 Enterprise Java Beans3 Enterprise Java Beans (EJB) Specifikace architektury pro vývoj a nasazení distribuovaných transakčních objektových komponent na straně serveru Konvence + sada rozhraní (EJB API) Cíl = zajištění kompatibility mezi produkty různých výrobců komponenty kontejner

4 Enterprise Java Beans4 EJB kontejner prostředí, v němž běží komponenty vzdálený přístup bezpečnost transakce souběžný přístup přístup ke zdrojům a jejich sdílení izolace komponent od aplikací nezávislost na dodavateli kontejneru zjednodušení tvorby aplikací

5 Enterprise Java Beans5 EJB kontejner transakceperzistencebezpečnost Bean callback metody EJBContext, JNDI ENC klient požadavek Zdroj: www.jguru.com

6 Enterprise Java Beans6 Aplikační komponenty v J2EE Klienti aplikace samostatné programy s vlastním uživatelským rozhraním Aplety vizuální komponenty spouštěné obvykle v prostředí webového prohlížeče Webové komponenty servlety, stránky JSP, filtry,... beží obvykle v prostředí webového serveru Komponenty EJB aplikační (business) logika

7 Enterprise Java Beans7 Aplikační komponenty v J2EE Databáze EJB EJB kontejner Webovýkontejner Webovýprohlížeč Klient Kontejnerklienta HTMLstránka Webovýprohlížeč servlet Aplet prezentace prezentačnílogika aplikačnílogika datovávrstva EJB Zdroj: Z+N

8 Enterprise Java Beans8 Struktura aplikace J2EE J2EE modul základní stavební jednotka popsán deskriptorem (Deployment Descriptor) reprezentován souborem.jar,.war,.rar EJB modul, webový modul, modul klienta aplikace, modul pro adaptéry J2EE aplikace deskriptor aplikace /META-INF/application.xml soubor.ear

9 Enterprise Java Beans9 Role při vývoji EJB aplikací Tvůrce komponent EJB příprava komponent a deskriptorů důraz na znovupoužitelnost Sestavitel aplikace skládá komponenty do větších celků Odborník na nasazení nasazení komponent do konkrétního prostředí konfigurace, příprava zdrojů, bezpečnostní politika

10 Enterprise Java Beans10 Role při vývoji EJB aplikací Dodavatel EJB serveru operační systém (Sun, IBM, HP) middleware technologie (Borland, IONA) databázový systém (Oracle, Sybase) Dodavatel EJB kontejneru nástroje pro nasazení EJB komponent vlastní běhové prostředí pro instance EJB Administrátor systému konfigurace a administrace infrastruktury dohled za běhu aplikace

11 Enterprise Java Beans11 Vlastnosti komponent EJB obsahují aplikační logiku instance se vytváří a spravuje kontejnerem možnost přizpůsobení změnou DD nastavení atributů odděleno od implementace přenositelnost beanů mezi kontejnery možnost práce s beanem bez nutnosti úpravy zdrojového kódu nebo rekompilace

12 Enterprise Java Beans12 Typy komponent EJB Session Beans bezstavové služby stavové objekty v rámci sezení Entity Beans perzistentní objekty spravované uživatelem (BMP) perzistentní objekty spravované kontejnerem (CMP) Message-Driven Beans bezstavové služby volané asynchronně příchodem JMS zpráv

13 Enterprise Java Beans13 Typy klientů Lokální klient v rámci stejného stroje JVM přímý přístup ke komponentě efektivnější přístup Vzdálený klient v jiném procesu než komponenta využívá standardní Java RMI rozhraní vyžaduje serializaci / deserializaci

14 Enterprise Java Beans14 Kontrakt mezi klientem a komponentami EJB Třídní rozhraní (Home Interface) javax.ejb.EJBHome, javax.ejb.EJBLocalHome vytváření, rušení a vyhledávání instancí implementováno třídami, které vytvoří kontejner referenci získá klient pomocí rozhraní JNDI

15 Enterprise Java Beans15 Kontrakt mezi klientem a komponentami EJB Rozhraní komponenty javax.ejb.EJBObject, javax.ejb.EJBLocalObject definice business metod implementováno třídou, kterou generuje kontejner udržování jednoznačné identity instance (generovaná, primární klíč)

16 Enterprise Java Beans16 Kontrakt mezi komponentami a kontejnerem EJB Třída komponenty: implementuje business metody, kontejner na ně deleguje volání od klienta; implementuje metody pro vytváření a rušení, případně i vyhledání komponent (ejbCreate, ejbFind..., ejbRemove); implementuje callback metody z rozhraní javax.ejb.SessionBean javax.ejb.EntityBean javax.ejb.MessageDrivenBean

17 Enterprise Java Beans17 Kontrakt mezi komponentami a kontejnerem EJB Kontejner: poskytuje přístup ke kontextu instance komponenty: javax.ejb.SessionContext, javax.ejb.EntityContext, javax.ejb.MessageDrivenContext; poskytuje JNDI kontext; řídí transakce, bezpečnost, ošetření výjimek; zajišťuje správu stavu komponenty (CMP).

18 Enterprise Java Beans18 Session Beans zapouzdření logiky do neperzistentních objektů možnost odstranění instance (timeout, pád kontejneru, systémová výjimka) možnost dočasného uložení stavu stavové (state) / bezstavové (stateless) zachování stavu po dobu existence relace nejsou určeny pro sdílení více klienty serializace přístupu

19 Enterprise Java Beans19 Stavové Session Beans vytvoření instance create (parametry) pasivace a aktivace instance ejbPassivate() ejbActivate() zrušení instance remove() timeout transakce řízené uživatelem řízené kontejnerem

20 Enterprise Java Beans20 Vytvoření instance komponenty Získání reference na třídní rozhraní import javax.naming.*; Context ctx = new InitialContext(); AHome aHome = (AHome)javax.rmi.PortableRemoteObject.narrow( ctx.lookup(“java:comp/env/ejb/a”, AHome.class); // remote AHome aHOme = (AHome)ctx.lookup(…); // local Vytvoření instance A a = aHome.create (parametry)

21 Enterprise Java Beans21 Příklad – třídní rozhraní // ScitackaHome.java import java.rmi.RemoteException; import javax.ejb.*; public interface ScitackaHome extends EJBHome { public Scitacka create() throws RemoteException, CreateException; }

22 Enterprise Java Beans22 Příklad – rozhraní komponenty // Scitacka.java import java.rmi.RemoteException; import javax.ejb.*; public interface Scitacka extends EJBObject { public int secti(int a, int b) throws RemoteException; }

23 Enterprise Java Beans23 Příklad – třída komponenty // ScitackaBean.java import javax.ejb.*; public class ScitackaBean implements SessionBean { private SessionContext ctx; public ScitackaBean() {} public void ejbCreate() throws CreateException {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext ctx) { this.ctx = ctx; } public int secti(int a, int b) { return a+b; }

24 Enterprise Java Beans24 Příklad – klient // Test.java import javax.naming.*; import javax.rmi.PortableRemoteObject; public class Test { public static void main(String[] args) { try { Context ctx = new InitialContext(); ScitackaHome sh = (ScitackaHome)PortableRemoteObject.narrow( ctx.lookup(“java:comp/env/ejb/Scitacka”), ScitackaHome.class); Scitacka scitacka = sh.create(); System.out.println(scitacka.secti(123,321)); scitacka.remove(); } catch( Exception ex ) { ex.printStackTrace(); }

25 Enterprise Java Beans25 Entity Beans Pohled na perzistentní entitu obvykle v relační databázi Sdílený přístup více uživatelů Perzistentní identita instance primární klíč přežívá i restart kontejneru Zajištění správy perzistentního stavu Container Managed Persistence (CMP) Bean Managed Persistence (BMP)

26 Enterprise Java Beans26 Třídní rozhraní Vytvoření nového objektu create<>(parametry) Vyhledání existujícího objektu find (parametry) A findByPrimaryKey(A_PK key) Rušení instance remove(A_PK key) Třídní business metody

27 Enterprise Java Beans27 Příklad // OsobaHome.java import java.rmi.RemoteException; import javax.ejb.*; import java.util.Collection; public interface OsobaHome extends EJBHome { public Osoba create(String rc, String jm) throws CreateException, RemoteException; public Osoba findByPrimaryKey(String rc) throws FinderException, RemoteException; public Collection findByJmeno(String jm) throws FinderException, RemoteException; public int getPocetOsob() throws RemoteException; }

28 Enterprise Java Beans28 Perzistence řízená kontejnerem Abstraktní schéma perzistence atributy řízené kontejnerem vztahy (1:1, 1:N, M:N) součást DD mapování do relačního schématu není součástí specifikace EJB (vendor-specific DD) Třída beanu deklarována jako abstract implementaci generuje kontejner neobsahuje atributy a vztahy (pouze v DD) přístupové metody public abstract get/set

29 Enterprise Java Beans29 Příklad – rozhraní komponenty import java.rmi.*; import javax.ejb.*; public interface Osoba extends EJBObject { public String getRc() throws RemoteException; public String getJmeno() throws RemoteException; public void setJmeno(String jmeno) throws RemoteException; }

30 Enterprise Java Beans30 Perzistence řízená komponentou Přístup k datům implementuje třída komponenty ejbCreate, ejbRemove ejbFind ejbLoad, ejbStore Vztahy nejsou definovány v DD Možné přístupy: udržování celého stavu objektu v instanci udržování jen některých atributů instance svůj stav neudržuje

31 Enterprise Java Beans31 Message-Driven Beans Nově definovány specifikací EJB 2.0 Volají se asynchronně jako výsledek přijetí JMS zpráv nemají rozhraní pro klienty metoda onMessage(Message msg) Neudržují si stav týkající se klienta Všechny instance jsou ekvivalentní příchozí požadavek může zpracovat libovolná instance

32 Enterprise Java Beans32 Java Messaging Service (JMS) Systém pro zasílání zpráv Vlastnosti: minimální vazba komunikujících aplikací asynchronnost spolehlivost Prvky architektury JMS JMS poskytovatel – součást J2EE produktu Klienti (JMS nebo nativní) Zprávy Administrované objekty – destinations, connection factories

33 Enterprise Java Beans33 Způsoby komunikace v JMS Komunikace bod-bod (point-to-point) fronty zpráv (queues) zpráva adresována do jedné fronty příjemce si vybírá zprávy z fronty příjemce potvrzuje úspěšné přijetí zprávy Producent/předplatitel (publish/subscribe) zpráva adresována nějakému cíli (topic) distribuce zprávy všem předplatitelům

34 Enterprise Java Beans34 Vztahy mezi JMS objekty Connection MessageProducerMessageConsumer Session Message ConnectionFactoryCílovýkanál vytváří vytváří vytvářívytváří vytváří zasílá zprávy přijímá zprávy MessageTextMessage... QueueSessionTopicSession QueueConnectionTopicConnection QueueTopic QueueSenderTopicPublisher QueueReceiverTopicSubscriber QueueConnectionFactoryTopicConnectionFactory

35 Enterprise Java Beans35 Závěr Důvody k nasazení J2EE přenositelnost (74 %) otevřenost standardu (28 %) škálovatelnost (24 %) snadnost vývoje (22 %) výkon (16 %) Problémy nasazení J2EE překročení plánované doby vývoje (22/50) překročení rozpočtu na projekt (23/50)

36 Enterprise Java Beans36 Závěr Největší problémy při vývoji J2EE aplikací nedostatečná zkušenost s podobnými projekty (24 %) změny ve specifikaci (22 %) nezvládnuté řízení projektu vývoje (20 %) Spokojenost s volbou: 92 % zákazníků  Zdroj: Forrester Research, červenec 2001, Z+N

37 Enterprise Java Beans37 Další zdroje informací www.jguru.com Enterprise JavaBeansTM Technology Fundamentals Short Course Z+N Zelený, J., Nožička, J.: Komponentní architektury COM+, CORBA, EJB. BEN – technická literatura, Praha, 2002, ISBN 80-7300-057-1


Stáhnout ppt "Technologie Enterprise Java Beans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213"

Podobné prezentace


Reklamy Google