Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/25
Obsah, Enterprise. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 2/25
Znovupoužitelné softwarové komponenty založené na jazyce Java. Definujeme pouze prázdný konstruktor. Vlastnosti private přístup. Metody pro přístup k vlastnostem jsou vždy public, public <propertytype> get<property>() pro vlastnost property. Metody. Události. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 3/25
Zavedení JavaBean do JSP stránky Vytvoř instanci třídy definovanou parametrem class, instanci ulož do proměnné definované atributem id. <jsp:usebean id="name" class="package.class"/> Ekvivalentní s: <% package.class name = new package.class(); %> Značka jsp:usebean poskytuje více možností: <jsp:usebean id="name" class="package.class" scope="page request session application" type="package.class" beanname="package.class"/> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 4/25
Hodnota atributu scope 1/2 page Implicitní hodnota, uložení do objektu pagecontext třídy PageContext po dobu trvání požadavku. Získání instance pomocí pagecontext.getattribute(). request bean se uloží do instance request třídy ServletRequest. Získání instance pomocí request.getattribute(). c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 5/25
Hodnota atributu scope 2/2 session bean se uloží do instance session třídy HttpSession. Získání instance pomocí session.getattribute(). application bean se uloží do instance application třídy ServlerContext. Objekt je sdílený v celé webové aplikaci, resp. mezi všemi servlety. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 6/25
Nastavení vlastností JavaBean Značka: <jsp:setproperty name = "bean <%= výraz %>" property = "someproperty" value = "string <%= výraz %>" param = "parameter" /> name odvolání na konkrétní komponentu. property nastavovaná vlastnost. Např. název name musí odpovídat metodě setname() v bean. Pro nastavení není možné použít JSP výraz. value nastavovaná hodnota. param nastavovaná hodnota, vlastnost bean není typu string. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 7/25
Získání vlastností JavaBean <jsp:getproperty name = "bean" property = "prop" /> Ekvivalentní s <%= bean.getprop(); %> Uložení hodnoty: <% String s = bean.getprop(); %> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 8/25
Příklad Bean 1/3, index.html <form action= " enter. j s p " > <input type= " t e x t " name= "name" > <input type= " submit " name= " submit " value= "OK" > < / form> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 9/25
Příklad Bean 2/3, index.html <%@ page language = " java "%> <%@ page contenttype= " t e x t / html "%> <%@ page import="bean " %> < j s p : usebean i d = " bean " scope= " page " class="bean " / > < j s p : setproperty name= " bean " p r o p e r t y = "name" value= "<%= request. getparameter ( "name")%>" / >... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 10/25
Příklad Bean 3/3, index.html public class Bean { private S t r i n g name ; } public void setname ( S t r i n g name) { this. name = name ; } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 11/25
Automatické nastavení vlastností z parametrů požadavku HTTP <jsp:setproperty name = "bean" property = "*"/> Není nutné postupné nastavování vlastností bean. Musíme dodržet stejná jména parametrů a vlastností. Např. login vs. setlogin(). c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 12/25
Podmíněné vytváření Bean jsp:usebean vytváří novou instanci pouze tehdy když v kontextu (hodnota atributu scope) neexistuje žádná komponenta se stejným id. Obsah elementu jsp:usebean <jsp:usebean...>... </jsp:usebean> je vykonán pouze při vytváření nové komponenty. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 13/25
Poznámky Motivace: Aplikační rámce jako Struts (http://struts.apache.org/) využívají bean pro zapouzdření logiky aplikace. JavaBean v adresářové struktuře Webové aplikace: CATALINA_HOME/webapps/aplikace/ WEB-INF/classes Nutná kompilace. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 14/25
Reference http://java.sun.com/products/ javabeans/index.jsp. JSP & http://interval.cz/serialy/ javaserver-pages-pro-vsechny/. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 15/25
Specifikace architektury pro vývoj a nasazení distribuovaných transakčních objektových komponent na straně serveru. Konvence + sada rozhraní (EJB API). Zajištění kompatibility mezi produkty různých výrobců. komponenty, kontejner. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 16/25
Enterprise Java Beans c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 17/25
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í. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 18/25
Vlastnosti komponent EJB Obsahují aplikační logiku. Instance se vytváří a spravuje kontejnerem. Nastavení atributu odděleno od implementace. Přenositelnost beanu mezi kontejnery. Možnost práce s beanem bez nutnosti úpravy zdrojového kódu nebo rekompilace. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 19/25
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. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 20/25
Typy klientů Lokální klient v rámci JVM, přímý přístup ke komponentám, efektivnější přístup. Vzdálený klient v jiném procesu než komponenta, využívá standardní Java RMI rozhraní, vyžaduje serializaci / deserializaci. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 21/25
Session Beans Zapouzdření logiky aplikace do neperzistentních objektů. Obvykle je definována množina operací, které se musí vykonat jako transakce. Např. vykonání platby, zapsání platby, zaslání mailu. stavové (state) / bezstavové (stateless) stavové spravují instanční proměnné pro různé klienty. bezstavové sdílejí instanční proměnné pro různé klienty. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 22/25
Entity Bean Obvykle reprezentuje jeden řádek v tabulce. Klienti přistupující ke stejnému záznamu využívají stejnou instanci EJB. Perzistentní komponenta, stav je ukládán. Řízení perzistence Container-Managed Persistence (CMP) perzistence je řízena kontejnerem. Bean-Managed Persistence (BMP) perzistenci zajišt uje programátor. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 23/25
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. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 24/25
Reference Enterprise http://java.sun.com/products/ejb/. Enterprise http://interval.cz/serialy/ ejb-2-x-enterprise-javabeans-2-x/. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 25/25