240 likes | 394 Views
Modelov ání EJB komponent. Diplomová práce Lukáš Valenta. Obsah prezentace. Softwarové komponenty a modely Komponenty Enterprise JavaBeans (EJB) Modelování komponent UML ENT metamodel Praktická část práce Architektura navrhovaného programu Zpracování výstupu Praktická ukázka.
E N D
Modelování EJB komponent Diplomová práce Lukáš Valenta
Obsah prezentace • Softwarové komponenty a modely • Komponenty Enterprise JavaBeans (EJB) • Modelování komponent • UML • ENT metamodel • Praktická část práce • Architektura navrhovaného programu • Zpracování výstupu • Praktická ukázka
Softwarová komponenta • Černá skříňka • Zapouzdření • Rozhraní • Znovupoužití • Spojování s programem • Při překladu • Za běhu
Komponentové modely Definují standard, který musí množina komponent dodržet, aby z nich bylo možné poskládat aplikace. • Formát specifikace rozhraní • Prostředí pro běh komponent • Služby poskytované komponentám • COM+ (Component Object Model) • CCM (CORBA Component Model) • EJB (Enterprise JavaBeans)
Komponenty EJB • Obsahují business logiku • Verze 2.1 • 3 typy komponent • Session beans • Vázané na relaci klienta • Stavové / bezstavové • Entity beans • Reprezentují entity uložené v úložišti (DB) • Životnost beanu = životnost záznamu v DB • Message-driven beans • Zpracování asynchronně zasílaných požadavků (zpráv)
Komponenta EJB • „Home“ rozhraní • Metody náležející k beanu jako celku • Vyhledávání, vytváření a rušení instancí • Získání reference prostřednictvím JNDI • Rozhraní komponenty • Aplikační rozhraní • Další poskytovaná a požadovaná rozhraní • Třída beanu • Implementuje aplikační metody, vlastní „tělo“ • Deployment Descriptor • XML soubor • Informace o komponentách obsažených v modulu • Distribuuje se v JAR archivu
Rozhraní komponenty • „Home“ rozhraní public interface FiboHome extends javax.ejb.EJBHome { public Fibo create() throwsjava.rmi.RemoteException; } • Aplikační rozhraní public interface Fibo extends javax.ejb.EJBObject { /* Aplikační metoda */ publicdouble[] compute(int number) throws java.rmi.RemoteException; } • Další rozhraní specifikovaná vývojářem: • Rozhraní webovských služeb • Akceptované zprávy • Požadované zdroje a odkazovaná rozhraní • Požadované prostředí …
Třída beanu public class FiboBeanimplements javax.ejb.SessionBean { /* Konstruktor*/ public FiboBean() { super(); } /* Metoda volaná kontejnerem po vytvoření instance */ public void ejbCreate() throws CreateException {} /* Aplikační metoda */ publicdouble[] compute(int number) { /* Výpočet */ return vysledek; } }
Deployment descriptor <ejb-jar> <enterprise-beans> <session> <description>Fibonacci generator</description> <display-name>Fibo</display-name> <ejb-name>Fibo</ejb-name> <home>FiboHome</home> <remote>Fibo</remote> <ejb-class>FiboBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>container</transaction-type> <ejb-ref> <ejb-ref-name>ejb/FiboEntity</ejb-ref-name> <home>FiboEntityHome</home> <remote>FiboEntityRemote</remote> </ejb-ref> ... </session> </enterprise-beans> </ejb-jar>
Modelování komponent • Unified Modeling Language • Univerzální grafický jazyk • Specifikace, dokumentace SW systémů • Rozšiřitelný (stereotypy) • Diagram komponent, tříd • ENT metamodel • Popis rozhraní komponent • Exports-Needs-Ties • Uživatelský úhel pohledu
ENT Metamodel • Element – prvek rozhraní komponenty • Název, typ, klasifikátor • Trait – související elementy • Stejný klasifikátor a meta-typ • Množina traitů definuje komponentový model • Kategorie – „podobné“ traity • Definovaný „úhel pohledu“ • Na základě klasifikátoru
Elementy • Klasifikovány z několika hledisek – dimenzí: • Nature, Kind, Role, Granularity, Construct, Presence, Arity, Lifecycle • Tag - sémantická informace přidružená k elementu Název:(prázdný) Typ:FiboEntityRemote Klasifikátor: ( {syntax}, {operational}, {required}, {structure}, {instance}, {permanent}, {single}, {development, assembly, deployment, runtime} ) Tag „locality“= „remote“ Tag „bean“= „ejb/FiboEntity“
Kategorie • Sdružujítraity na základě logické funkce definované nad klasifikátorem • E-N-T (Exports-Needs-Ties) • F-D (Functionality-Data) f Exports: role = { provided } fNeeds: role = { required } f Ties: role = { provided, required }
Praktický cíl práce Navrhnout a implementovat nástroj, který vytváří ENT reprezentaci rozhraní komponent EJB • Vstup: J2EE modul s EJB komponentami= JAR archiv • Třídy v přeložené formě: Java byte-kód • Deployment descriptor • Žádné zdrojové kódy či dokumentace • Výstup: XML soubor s ENT popisem jejich rozhraní • Elementy rozhraní komponent + tagy
XML výstup <application> <component ctype="Session" model="EJB2.1"> <provider>(empty)</provider> <namespace>(empty)</namespace> <name>Fibo</name> <tag name="security_id">use_caller</tag> <tag name="state">stateless</tag> <element> <name>(empty)</name> <type>Fibo</type> <tag name="locality">remote</tag> <trait>business_interfaces</trait> </element> ... </component> </application>
Vizualizace výstupu • Nástroj ENTVis, zobrazení dle kategorií
Závěr • Přínosy • Rozšíření ENT metamodelu • Implementace metamodelu • Zdrojem beany v binárním formátu, není potřeba zdrojových kódu či dokumentace • Náměty na rozšíření • EJB 3.0 • Využití možností Java 5.0 Děkuji za pozornost