DPKOM_8 Session beany

Rozměr: px
Začít zobrazení ze stránky:

Download "DPKOM_8 Session beany"

Transkript

1 DPKOM_8 Session beany 1

2 Obsah přednášky Úvod Bezstavové session beany SessionContext Životní cyklus bezstavových session beanů Stavové session beany Životní cyklus stavových session beanů Stavové session beany a rozšířený perzistentní kontext Vnořené stavové session beany 2

3 Úvod Session beany zaplňují mezeru zanechanou entitními beany. Session beany jsou užitečné pro popis interakcí mezi ostatními beany (taskflow) a pro implementaci konkrétních úloh. Mohou být využity ke čtení, aktualizaci a vkládání dat v business procesu. Např. session bean může být použit k udržování (řízení) seznamu všech volných kabin. 3

4 Úvod Použítí session beanů & použití entitní beanů. Základním pravidlem je, že entitní beany by měly poskytovat bezpečné a konzistentní rozhraní pro množinu sdílených dat, která definuje koncept. Session beany obsahují business logiku a entitní beany model perzistentních dat. Session beanyčasto řídí interakce mezi entitními beany. 4

5 Bezstavové session beany Výhodou těchto session beanů je, že se mohou prohazovat (vyměňovat) mezi EJB objekty, protože nejsou odkázány na údržbu pouze jednoho klienta a neudržují tzv. konverzační stav. Jakmile dokončí obsluhu vyvolání metody, mohou pokračovat v obsluze dalšího EJB objektu (klienta). Protože neudržují konverzační stav, nevyžadují pasivaci a aktivaci. Krátce řečeno bezstavové session beany jsou lehké a rychlé. 5

6 Bezstavové session beany Bezstavové session beany si nemusejí pamatovat nic z předchozího vyvolání metody. Jedinou výjimkou je informace získaná ze SessionContext a z JNDI ENC nebo odkazů na prostředí, které jsou přímo injektovány do beanu. Bezstavové session beany jsou verzí tradičních EJB aplikací transakčního zpracování, které jsou vykonávány prostřednictvím volání procedur. Procedura se vykonává od začátku do konce a pak teprve vrací výsledek. Po té, co procedura skončí je všechno zapomenuto. 6

7 Bezstavové session beany Tato omezení neznamenají, že session bean nemůže mít instanční proměnné, které udržují (zaznamenávají) nějaký druh interního stavu. Instanční proměnná může např. zaznamenávat počet vyvolání daného beanu, nebo ukládat data pro ladění. Dalším příkladem mohou být odkazy na živé zdroje např. URL, verifikace kreditní karty prostřednictvím jiného EJB. 7

8 Bezstavové session beany Vše potřebné v této souvislosti může být získáno prostřednictvím JNDI ENC nebo injektovaných polí. Avšak je důležité si zapamatovat, že tento stav klient nikdy neuvidí. Klient nikdy nemůže předpokládat, že jeho požadavek bude obsluhovat stejný bean. Stejně tak klient neví, kdy se provádí výstup pro ladění. 8

9 Příklad proces placení ProcessPayment Bean TravelAgent má metodu bookpassage(), která používá bean ProcessPayment. ProcessPayment je bezestavový session bean, který je používán beanem TravelAgent k tomu, aby zákazník zaplatil poplatek za plavbu. Session bean ProcesPayment bude také využíván k jakékoli platbě na lodi např. za nákupy dárků, nebo v butiku a další podobné služby. Proto logika beanu bude muset vyhovovat všem těmto požadavkům. 9

10 Příklad proces placení Process Payment Platby jsou zaznamenávány ve spaciální tabulce databáze s názvem PAYMENT. Data této tabulky jsou dávkově zpracovávaná pro účely účetnictví a nejsou normálně použita mimo tuto oblast. Pro placení mohou být použity kreditní karty, šeky nebo hotovost. 10

11 CREATE TABLE PAYMENT ( customer_id amount type check_bar_code check_number credit_number credit_exp_date DATE ) INTEGER, DECIMAL(8,2), CHAR(10), CHAR(50), INTEGER, CHAR(20), Poznámky Tabulka PAYMENT

12 Business rozhraní : ProcessPayment Business rozhraní (local/remote) pro uvedený bean bude mít následující metody: bycredit(), bycheck(), bycash(). Business rozhraní může být buď vzdálené nebo lokální, ale ne obě současně. Vzdálená business rozhraní vyvolávají klienti na síti (z jiného JVM). Když je klientem vyvolána metoda session beanu vzdáleného rozhraní, hodnoty parametrů a návratová hodnota jsou kopírovány. Tato sémantika volání je známá pod označením call-by-value (volání hodnotou). 12

13 Business rozhraní : ProcessPayment Lokální rozhraní jsou přístupná pouze v rámci stejného JVM jako session bean. Tehdy parametry nejsou kopírovány, ale využívá se sémantiky call-by-reference. Session bean ProcessPayment bude potřebovat vytvořit obě rozhraní. Obě rozhraní budou publikována stejným API. Pro zpřehlednění návrhu budou uvedené rozhraní podrozhraními bázového rozhraní s názvem com.titan.processpayment.processpayment: 13

14 package com.titan..titan.processpayment processpayment; Poznámky import com.titan..titan.domain domain.*; public interface ProcessPayment { public boolean bycheck(customer Customer customer, CheckDO check, double amount) throws PaymentException; public boolean bycash(customer Customer customer, double amount) throws PaymentException; public boolean bycredit(customer Customer customer, CreditCardDO card, double amount) throws PaymentException;

15 Business rozhraní : ProcessPayment Specifikace EJB dovoluje deklarovat vzdálené a lokální rozhraní za předpokladu deklarování stejných metod, což je splněno. Všechny metody vrací booleovskou hodnotu informující, zda byla platba úspěšná. Výjimka je vyhozena např. v případě neplatné karty z hlediska exspirace. Nic z rozhraní ProcessPayment není specifikováno v rezervačním systému. Je to z toho důvodu, že ProcessPayment se může využívat i v jiných typech plateb (mimo rezervace). 15

16 package com.titan..titan.processpayment processpayment; Poznámky import javax.ejb ejb.remote public interface ProcessPaymentRemote extends ProcessPayment { package com.titan..titan.processpayment processpayment; import javax.ejb ejb.local public interface ProcessPaymentLocal extends ProcessPayment {

17 Entity a parametry Každá z definovaných metod používá jako parametr entitní bean Customer. Entitní beany jsou zpracovávány jako standardní javovské objekty, je proto nutná implementace java.io.serializable nebo Externalizable. To je důležité, protože bean ProcessPayment zpřístupňuje vnitřní stav entity Customer. Pokud by každé volání metody get entity Customer šlo přes síť, bylo by to velmi nákladné. 17

18 Doménové objekty: třídy CrediCardDO a CheckDO Business rozhraní Bean ProcessPayment využívá obě třídy, CreditDO a CheckDO: 18

19 /* CreditCardDO.java */ package com.titan..titan.processpayment processpayment; Poznámky import java.util util.date Date; public class CreditCardDO implements java.io io.serializable { final static public String MASTER_CARD = "MASTER_CARD"; final static public String VISA = "VISA"; final static public String AMERICAN_EXPRESS = "AMERICAN_EXPRESS"; final static public String DISCOVER = "DISCOVER"; final static public String DINERS_CARD = "DINERS_CARD"; public String number; public Date expiration; public String type; public CreditCardDO(String number, Date expiration, String type) { this.number = number; this.expiration = expiration; this.type = type;

20 /* CheckDO.java */ package com.titan..titan.processpayment processpayment; public class CheckDO implements java.io io.serializable { public String checkbarcode; public int checknumber; Poznámky Objekty od uvedených tříd jsou doménové objekty. public CheckDO (String barcode, int number) { this.checkbarcode = barcode; this.checknumber = number; Jsou to serializovatelné javoské třídy ne enterprise beany. Poskytují vhodný mechanismus pro transport dat.

21 Výjimka aplikace PaymentException Libovolné vzdálené nebo lokální rozhraní může vyhodit aplikační výjimku. Aplikační výjimka by měla popisovat problém business logiky. Je důležité porozumět jaké výjimky by se měly použít a kdy je použít. Např. výjimky javax.naming.namingexception a javax.sql.sqlexception nemají nic co dočinění s business procesy. 21

22 Výjimka aplikace PaymentException Výjimka PayableException popisuje konkrétní business problém, který je pravděpodobně opravitelný (řešitelný). Kontejner EJB ošetří každou výjimku, která není podvýjimkou RuntimeException jako výjimku aplikace. Deklarace PaymentException: 22

23 package com.titan..titan.processpayment processpayment; Poznámky public class PaymentException extends java.lang lang.exception { public PaymentException() { super(); public PaymentException(String msg) { super(msg msg);

24 Výjimka aplikace PaymentException Aplikační výjimka je šířena k volajícímu klientovi. Jakákoli instanční proměnná zahrnutá do výjimky by měla být serializovatelná. Neaplikační výjimky jsou vždy sbaleny v EJBException. To znamená, že jakákoli výjimka, kterou vyhodíte a která je typu RuntimeException nebo její potomek, bude zachycena kontejnerem EJB a zabalena do EJBException. 24

25 Výjimka aplikace PaymentException Všechny výjimky vyhozené rozhraním Java Persistence jsou výjimky typu RuntimeException. Chování výjimky může být deklarováno explicitně s a pomocí XML <application-exception>. 25

26 package com.titan..titan.processpayment processpayment; import com.titan..titan.domain domain.*; import java.sql sql.*; import javax.ejb ejb.*; import javax.annotation annotation.resource Resource; import javax.sql sql.datasource DataSource; import javax.ejb ejb.ejbexception EJBException; Poznámky Třída ProcessPaymentBean bezstavový session public class ProcessPaymentBean implements ProcessPaymentRemote, ProcessPaymentLocal { final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = Resource(mappedName mappedname=" ="java java:/ :/titandb titandb") DataSource Resource(name name="min") int minchecknumber = 100; public boolean bycash(customer Customer customer, double amount) throws PaymentException { return process(customer customer.getid getid(), amount, CASH, null, -1, null, null);

27 public boolean bycheck(customer Customer customer, CheckDO check, double amount) throws PaymentException { if (check check.checknumber checknumber > minchecknumber) { return process(customer customer.getid getid(), amount, CHECK, check.checkbarcode checkbarcode, check.checknumber checknumber, null, null); else { throw new PaymentException(" ("Check number is too low. Must be at least "+minchecknumber minchecknumber); public boolean bycredit(customer Customer customer, CreditCardDO card, double amount) throws PaymentException { if (card card.expiration expiration.before before(new java.util util.date Date())) { throw new PaymentException(" ("Expiration date has passed"); else { return process(customer customer.getid getid(), amount, CREDIT, null, -1, card.number number, new java.sql sql.date Date(card card.expiration expiration.gettime gettime())); Poznámky

28 private boolean process(int customerid, double amount, String type, String checkbarcode, int checknumber, String creditnumber, java.sql sql.date creditexpdate) throws PaymentException { Poznámky Connection con = null; PreparedStatement ps = null; try { con = datasource.getconnection getconnection(); ps = con.preparestatement ("INSERT INTO payment (customer customer_id, amount, type,"+ "check check_bar bar_code code,check check_number number,credit credit_number number,"+ "credit credit_exp exp_date date) VALUES (?,?,?,?,?,?,?)"); ps.setint setint(1, (1,customerID customerid); ps.setdouble setdouble(2, (2,amount amount); ps.setstring setstring(3,type); ps.setstring setstring(4, (4,checkBarCode checkbarcode); ps.setint setint(5, (5,checkNumber checknumber); ps.setstring setstring(6, (6,creditNumber creditnumber); ps.setdate setdate(7, (7,creditExpDate creditexpdate); int retval = ps.executeupdate executeupdate(); if (retval retval!=1) { throw new EJBException(" ("Payment insert failed"); return true;

29 catch(sqlexception sql) { throw new EJBException(sql sql); finally { try { if (ps!= null) ps.close close(); if (con con!= null) con.close close(); catch(sqlexception se) { se.printstacktrace printstacktrace(); Poznámky

30 package javax.ejb Target(TYPE) Retention(RUNTIME) Stateless { String name() default ; Atribut name() identifikuje EJB jméno session beanu. Defóltní jméno pro uvedenou třídu beanu bude ProcessPaymentBean. Třída bean identifikuje svoje vzdálené a lokální rozhraní implementací rozhraní ProcessPaymentRemote a ProcessPaymentLocal. Když je bean rozmisťovaný, kontejner se podívá na rozhraní třídy bean a zkontroluje jestli jsou anotované (opatřené javax.ejb ejb.local javax.ejb ejb.remote Remote. Poznámky Třída bean je opatřena anotacemi s využitím Tato introspekce (nahlédnutí dovnitř) určí vzdálené a lokální rozhraní třídy bean. Alternativně třída bean nemusí implementovat žádné rozhraní a mohou být použity přímo ve třídě.

31 Local(ProcessPaymentLocal ProcessPaymentLocal.class Remote(ProcessPaymentRemote ProcessPaymentRemote.class class) public class ProcessPaymentBean { Poznámky final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = "CHECK"; Když se uvedená deklarace použije ve třídě bean, vezmou pole rozhraní tříd. Toto není doporučeno dokud nemusíte, protože implementace business rozhraní přímo vyžaduje smlouvu (kontrakt) mezi třídou bean a těmito rozhraními.

32 Třída ProcessPayment Bean Tři deklarované metody (možnosti) placení volají metodu process(), která provádí přidání platby do databáze. Tento způsob redukuje chyby programátora. Metoda process() nevyužívá entitní bean, ale přímo zapisuje data do tabulky PAYMENT s použitím JDBC. 32

33 Zpřístupnění vlastností prostředí (injection) Položky datasource a minchecknumber jsou příklady session položek, které je inicializované prostředím EJB prostředí. Každý kontejner EJB má svůj vlastní interní registr, kde ukládá konfigurační hodnoty a odkazy na externí zdroje a služby. Tento registr se jmenuje Enterprise Naming Context (ENC). Takové instanční proměnné jsou opatřeny 33

34 Zpřístupnění vlastností prostředí (injection) Ta říká kontejneru, že když je vytvářena instance od třídy bean, atributy opatřeny uvedenou anotací musí být inicializovány hodnotami uvedenými v ENC. Když je kontejner EJB rozmístěn, ENC je šířen s metadaty v anotaci a s informacemi uloženými v libovolném popisovači rozmístění EJB XML. 34

35 Zpřístupnění vlastností prostředí (injection) Například která označuje zdrojové datové pole obsahuje atribut mappedname(), který identifikuje externí datový zdroj JDBC, který by měl být mapován do ENC. pro položku minchecknumber identifikuje jmennou hodnotu, která je použita k externí inicializaci uvedeného pole (položky). Právě tyto hodnoty mohou být nakonfigurovány s využitím popisovače rozmístění EJB XML: 35

36 Poznámky V uvedené popisovači je jméno min s hodnotou 250, která je využita jako hraniční hodnota. <ejb ejb ejb ejb-jar jar jar jar xmlns xmlns xmlns xmlns="http:// ="http:// ="http:// ="http://java java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee" xmlns xmlns xmlns xmlns:xsi xsi xsi xsi="http://www.w3. ="http://www.w3. ="http://www.w3. ="http://www.w3.org org org org/2001/ /2001/ /2001/ /2001/XMLSchema XMLSchema XMLSchema XMLSchema-instance" instance" instance" instance" xsi xsi xsi xsi:schemalocation schemalocation schemalocation schemalocation="http:// ="http:// ="http:// ="http://java java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee/ejb ejb ejb ejbjar_3_0. jar_3_0. jar_3_0. jar_3_0.xsd xsd xsd xsd" version version version version="3.0"> ="3.0"> ="3.0"> ="3.0"> <enterprise enterprise enterprise enterprise-beans beans beans beans> <session> <session> <session> <session> <ejb ejb ejb ejb-name name name name>processpaymentbean ProcessPaymentBean ProcessPaymentBean ProcessPaymentBean ejb ejb ejb ejb-name name name name> <env env env env-entry entry entry entry> <env env env env-entry entry entry entry-name name name name>min >min >min >minenv env env env-entry entry entry entry-name name name name> <env env env env-entry entry entry entry-type> type> type> type>java java java java.lang lang lang lang.integer Integer Integer Integer env env env env-entry entry entry entry-type> type> type> type> <env env env env-entry entry entry entry-value value value value>250 >250 >250 >250env env env env-entry entry entry entry-value value value value> env env env env-entry entry entry entry> session> session> session> session> enterprise enterprise enterprise enterprise-beans beans beans beans> ejb ejb ejb ejb-jar> jar> jar> jar>

37 Poznámky XML popisovač rozmístění Tento popisovač je alternativou k anotacím a rozšiřuje metadata, která nemusíte deklarovat v anotacích. Uvedený popisovač rozmístění, který poskytuje kompletní alternaci pro EJB ProcesPayment <? <? <? <?xml xml xml xml version version version version="1.0"?> ="1.0"?> ="1.0"?> ="1.0"?> <ejb ejb ejb ejb-jar jar jar jar xmlns xmlns xmlns xmlns="http:// ="http:// ="http:// ="http://java java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee" xmlns xmlns xmlns xmlns:xsi xsi xsi xsi="http://www.w3. ="http://www.w3. ="http://www.w3. ="http://www.w3.org org org org/2001/ /2001/ /2001/ /2001/XMLSchema XMLSchema XMLSchema XMLSchema-instance" instance" instance" instance" xsi xsi xsi xsi:schemalocation schemalocation schemalocation schemalocation="http:// ="http:// ="http:// ="http://java java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee java java java.sun sun sun sun.com com com com/xml xml xml xml/ns ns ns ns/javaee javaee javaee javaee/ejb ejb ejb ejb-jar_3_0. jar_3_0. jar_3_0. jar_3_0.xsd xsd xsd xsd" version version version version="3.0"> ="3.0"> ="3.0"> ="3.0"> <enterprise enterprise enterprise enterprise-beans beans beans beans> <session> <session> <session> <session> <ejb ejb ejb ejb-name name name name>processpaymentbean ProcessPaymentBean ProcessPaymentBean ProcessPaymentBean ejb ejb ejb ejb-name name name name> <remote remote remote remote>com com com com.titan..titan..titan..titan.processpayment processpayment processpayment processpayment.processpaymentremote ProcessPaymentRemote ProcessPaymentRemote ProcessPaymentRemote remote remote remote remote> <local local local local>com com com com.titan..titan..titan..titan.processpayment processpayment processpayment processpayment.processpaymentlocal ProcessPaymentLocal ProcessPaymentLocal ProcessPaymentLocal local local local local> <ejb ejb ejb ejb-class class class class>com com com com.titan..titan..titan..titan.processpayment processpayment processpayment processpayment.processpaymentbean ProcessPaymentBean ProcessPaymentBean ProcessPaymentBean ejb ejb ejb ejbclass class class class> <session <session <session <session-type> type> type> type>stateless Stateless Stateless Statelesssession session session session-type> type> type> type> <env env env env-entry entry entry entry> <env env env env-entry entry entry entry-name name name name>min >min >min >minenv env env env-entry entry entry entry-name name name name> <env env env env-entry entry entry entry-type> type> type> type>java java java java.lang lang lang lang.integer Integer Integer Integer env env env env-entry entry entry entry-type> type> type> type> <env env env env-entry entry entry entry-value value value value>10 >10 >10 >10env env env env-entry entry entry entry-value value value value> <injection injection injection injection-target target target target> <injection injection injection injection-target target target target-class class class class> com com com com.titan..titan..titan..titan.processpayment processpayment processpayment processpayment.processpaymentbean ProcessPaymentBean ProcessPaymentBean ProcessPaymentBean injection injection injection injection-target target target target-class class class class> <injection injection injection injection-target target target target-name name name name>minchecknumber minchecknumber minchecknumber minchecknumber injection injection injection injection-target target target targetname> name> name> name> injection injection injection injection-target target target target> env env env env-entry entry entry entry>

38 Poznámky XML poskytuje jednu zajímavost, kterou je použití RuntimeException místo EJBException ve třídě beanu. Je to způsobeno tím, že javovský kód nemá žádný odkaz na specifikace EJB. <resource resource resource resource-ref ref ref ref> <res res res res-ref ref ref ref-name name name name>thedatasource thedatasource thedatasource thedatasource res res res res-ref ref ref ref-name name name name> <res res res res-type> type> type> type>javax javax javax javax.sql sql sql sql.datasource DataSource DataSource DataSource res res res res-type> type> type> type> <res res res res-auth auth auth auth>container Container Container Container res res res res-auth auth auth auth> <mapped mapped mapped mapped-name name name name>java java java java:/ :/ :/ :/DefaultDS DefaultDS DefaultDS DefaultDS mapped mapped mapped mapped-name name name name> <injection injection injection injection-target target target target> <injection injection injection injection-target target target target-class class class class> com com com com.titan..titan..titan..titan.processpayment processpayment processpayment processpayment.processpaymentbean ProcessPaymentBean ProcessPaymentBean ProcessPaymentBean injection injection injection injection-target target target target-class class class class> <injection injection injection injection-target target target target-name name name name>datasource datasource datasource datasource injection injection injection injection-target target target target-name name name name> injection injection injection injection-target target target target> resource resource resource resource-ref ref ref ref> session> session> session> session> enterprise enterprise enterprise enterprise-beans beans beans beans> ejb ejb ejb ejb-jar> jar> jar> jar>

39 Session kontext SessionContext Rozhraní javax.ejb.sessioncontext poskytuje pohled do prostředí kontejneru EJB. Objekt SessionContext může být použitý jako rozhraní instance beanu ke kontejneru EJB k získání informací o kontextu volání metod a poskytuje rychlý přístup k různým službám EJB. Odkaz na SessionContext získá session bean public class ProcessPaymentBean implements ProcessPayment SessionContext ctx;... 39

40 SessionContext dovoluje získat informace jako aktuální uživatel, který vyvolal session bean, nebo vyhledat vstupy uvnitř ENC EJB. Rozhraní javax.ejb.sessioncontext: Poznámky public interface javax.ejb ejb.sessioncontext extends javax.ejb ejb.ejbcontext { EJBLocalObject getejblocalobject() throws IllegalStateException EJBObject getejbobject() throws IllegalStateException ; MessageContext getmessagecontext() throws IllegalStateException; <T> getbusinessobject(class Class<T> businessinterface) throws IllegalStateException; Class getinvokedbusinessinterface(); Metody getejbobject() a getejblocalobject() jsou metody EJB 2.1 a vyhazují při vyvolání výjimku. Metoda SessionContext.getBusinessObject() vrací odkaz aktuální bean, který může být vyvolaný jiným klientem. Tato reference je stejná jako reference v Javě. Parametr businessinterface musí být lokální nebo vzdálené rozhraní, takže kontejner ví, zda má vytvořit lokální nebo vzdálený odkaz na bean. Metoda getbusinessobject() dovoluje instanci beanu získat odkaz sama na sebe a ten předat jinému beanu:

41 @Stateless public class A_Bean implements A_BeanRemove private SessionContext context; public void somemethod() { B_BeanRemote BeanRemote b =... // get a remote reference to B_Bean Bean. A_BeanRemote myself = getbusinessobject(a_ (A_BeanRemote BeanRemote.class class); b.amethod amethod(myself myself); Poznámky Pro instanci beanu je nepřípustné, aby předala referenci this jinému beanu; místo toho předává odkaz svého vzdáleného nebo lokálního EJB objektu, který instance beanu dostane z jejího SessionContextu. Metoda SessionContext.getInvokedBusinessInterface() dovoluje stanovit, zda váš bean byl vyvolán prostřednictvím vzdáleného, lokálního nebo web service rozhraní. Vrací vyvolané business rozhraní jako třídu.

42 EJBContext Třída SessionContext je podtřídou třídy javax.ejb.ejbcontext. Třída EJBContext definuje některé užitečné metody, které poskytují užitečné informace beanu za jeho běhu. Definice rozhraní EJBContext: 42

43 package javax.ejb ejb; public interface EJBContext { Poznámky public Object lookup(string name); // EJB 2.1 only> TimerService public TimerService gettimerservice() throws java.lang lang.illegalstateexception IllegalStateException; // security methods public java.security security.principal getcallerprincipal(); public boolean iscallerinrole(java java.lang lang.string rolename); // transaction methods public javax.transaction transaction.usertransaction getusertransaction() throws java.lang lang.illegalstateexception ; public boolean getrollbackonly() throws java.lang lang.illegalstateexception IllegalStateException; public vois setrollbackonly() throws java.lang lang.illegalstateexception IllegalStateException; // deprecated and obsolete methods public java.security security.identity getcalleridentity(); public Boolean iscallerinrole(java java.security security.identity role); public java.util util.properties getenvironment(); public EJBHome getejbhome() throws java.lang lang.illegalstateexception ; public EJBLocalHome getejblocalhome() throws java.lang lang.illegalstateexception IllegalStateException;

44 EJBContext Metoda EJBContext.lookup() dovoluje vyhledat vstupy v ENC. Metoda EJBContext.getTimerService() vrací odkaz na Timer Service kontejneru, která dovoluje bezstavovému beanu nastavit oznámení o časových událostech. Timer Service může být také injektována s použitím Metoda EJBContext.getCallerPrincipal() se používá k získání objektu java.security.principal, který reprezentuje klienta, který aktuálně přistupuje k beanu. 44

45 EJBContext Objekt Principal může být např. využitý k identifikaci klienta, který dělá public class BankBean implements Bank SessionCintext context;... public void withdraw(int acid, double amount) throws AccessDeniedException { String modifiedby = principal.getname();... 45

46 @Stateless public class BankBean implements Bank SessionContext context; public void withdraw(int int acid, double amount) throws AccessDeniedException { if(amount > 10000) { boolean inmanager = context.iscallerinrole iscallerinrole( Manager Manager ); if(! (!ismanager ismanager) { // Only Managers can withdraw more than 10k. throw new AccessDeniedException(); Poznámky Metoda EJBContext.isCallerI nrole()říká, zda-li klient přistupující k beanu je členem specifické role identifikované jménem role. Viz příklad: Některé uváděné metody jsou k verzi EJB 2.1 a jsou již zastaralé. Např. metody getejbhome() a getejblocalhome() způsobí vyhození výjimky RuntimeException.

47 Životní cyklus bezstavových session beanů Životní cyklus bezstavového beanu má pouze dva stavy: Does Not Exit a Metod-Ready Pool. Stav Metod-Ready Pool je společná oblast instancí objektů bezstavových beanů, které nejsou v použití. Stav Does Not Exit reprezentuje stav, kdy z beanu ještě nebyly vytvořeny instance. Když je server EJB poprvé spuštěn, může si vytvořit několik instancí bezstavových beanů (záleží na implementaci), při nedostatku instancí, může server vytvořit další instance a přidat je do společné oblasti. 47

48 Přechod do stavu Metod-Ready Pool Při přechodu ze stavu Does Not Exit do stavu Metod-Ready Pool jsou provedeny tři operace: 1. je vytvořena instance beanu vyvoláním metody Class.newInstance() 2. kontejner injektuje zdroje, které metadata beanu požadují prostřednictvím anotací nebo XML popisovače rozmístění. 3. kontejner EJB bude posílat (vysílat) událost postconstruction. 48

49 Přechod do stavu Metod-Ready Pool Třída beanu se může registrovat pro tyto události anotací metody Tato anotační metoda zpětného volání je volána kontejnerem poté, co je vytvořena instance beanu. Může mít libovolné jméno, musí vracet void, nesmí mít žádné parametry a vyhazovat výjimku no check. 49

50 Přechod do stavu Metod-Ready Pool Třída bean může definovat pouze public class MyBean implements MyLocal public void myinit() { Bezstavové session beany mohou udržovat otevřená spojení na zdroje po celý jejich životní cyklus. by měla zavřít otevřené zdroje před tím, než je instance bezstavového session beanu vyklizena z operační paměti. 50

51 Život ve stavu Method-Ready Pool V tomto stavu je instance připravena obsloužit požadavky klienta. Když klient vyvolá business metodu EJB objektu, volání metody je delegováno na libovolnou volnou instanci ve společné oblasti Method-Ready Pool. Zatímco instance vykonává požadavek, není dostupná jiným EJB objektům. Ihned jak instance skončí, je okamžitě dostupná libovolnému EJB objektu, který ji potřebuje. Instance bezstavových session beanů jsou přiřazeny objektu EJB pouze po dobu trvání volání jedné metody. 51

52 Život ve stavu Method-Ready Pool Když je instance vybrána ze společné oblasti, její ContextSession se mění tak, aby odrážel kontext objektu EJB a klienta vyvolávající metodu. Instance beanu mohou být začleněny do transakčního rozsahu klientské žádosti a mohou přistupovat k informacím SessionContextu, které jsou specifické pro dotaz klienta. Např. bezpečnostní a transakční metody. Poté co instance ukončí obsluhu klienta, je odloučena (oddělena) od objektu EJB a vrací se do společné oblasti připravených metod. 52

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze NOVINKY V JEE EJB 3.1 Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze PROGRAM Seznámení s Java Enterprise Edition (JEE) Enterprise Java Beans (EJB) Novinky v EJB 3.1 2 JAVA EDITIONS Java

Více

DPKOM_06 Dědičnost entit a zpětná volání posluchači

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby DPKOM_2 Technologie Enterprise JavaBeans Řízení zdrojů a primární služby 1 Obsah přednášky Technologie Enterprise JavaBeans Distribuované zpracování základ EJB EJB služby middleware Řízení zdrojů Primární

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

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

Více

Enterprise Java Beans 3.0

Enterprise Java Beans 3.0 Enterprise Java Beans 3.0 Lukáš Zapletal liberix.cz EJB 3.0 a JPA 1.0 JavaBean - vysvětlení pojmu Java třída s get/is a set metodami má tedy vlastnosti žádné další podmínky nejsou kladeny JavaBean je tedy

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

DPKOM_7 Dotazy a EJB QL

DPKOM_7 Dotazy a EJB QL DPKOM_7 Dotazy a EJB QL 1 Obsah přednášky API dotazů (Query API) EJB QL Nativní dotazy pojmenované dotazy (Named Queries) 2 API dotazů EJB QL je deklarativní dotazovací jazyk, podobný SQL pro relační databáze,

Více

(Enterprise) JavaBeans. Lekce 7

(Enterprise) JavaBeans. Lekce 7 (Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Úvod JINI (pronounced GEE-nee; loosely derived from the Arabic for magician) Systém pro vyhledávání (lookup) a objevování (discovery) objektů v síti Zcela

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Java a Caché IV: Manipulace s objekty

Java a Caché IV: Manipulace s objekty 1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Technologie Java Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Trocha historie Java vznikla v roce 1995 jak minimalistický programovací jazyk (211 tříd). Syntaxe vycházela z C/C++. V

Více

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k

Více

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5); Programovací jazyk PHP doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Třídy a objekty Výjimky Webové aplikace

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Vláknové programování část V

Vláknové programování část V Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Jazyk C++ II. Výjimky

Jazyk C++ II. Výjimky Jazyk C++ II Výjimky AR 2013/2014 Jazyk C++ II Funkce abort Dříve byl obvyklý způsob zavolat metodu abort(). Metoda provádí okamžitě: Vyprázdnění vyrovnávací paměti, Ukončení celého programu, Vrátí číslo

Více

Remote Method Invocation RMI

Remote Method Invocation RMI Remote Method Invocation RMI Java TM Remote Method Invocation (RMI) umožňuje objektu na jedné Java Virtual Mashine(JVM) jednoduše spustit metodu jiného objektu na vzdálené JVM. Při volání vzdálené metody

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Enterprise Java Beans historie, současnost a budoucnost 2006 Roman Musialek Prohlášení: Prohlašuji, že jsem tuto

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

Použití databází na Webu

Použití databází na Webu 4IZ228 tvorba webových stránek a aplikací Jirka Kosek Poslední modifikace: $Date: 2010/11/18 11:33:52 $ Obsah Co nás čeká... 3 Architektura webových databázových aplikací... 4 K čemu se používají databázové

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

Zabezpečení proti SQL injection

Zabezpečení proti SQL injection Zabezpečení proti SQL injection ESO9 intranet a.s. Zpracoval: Tomáš Urych U Mlýna 2305/22, 141 Praha 4 Záběhlice Dne: 19.9.2012 tel.: +420 585 203 370-2 e-mail: info@eso9.cz Revize: Urych Tomáš www.eso9.cz

Více

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE X33EJA Security, Realms Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE 'web.xml' 'glassfish-web.xml' dále nutno nastavit realm v admin. konzoli GF 1

Více

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ Technologie Jalapeño od InterSystems Andreas Dieckow, Principal Product Manager, Strategic Planning InterSystems Corporation Úvod Programovací jazyk Java má díky

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent

Více

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ)

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ) 29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ) Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml Rozhraní SAX, SAX vs. SAX2 Jaroslav Ciml Použití SAX - připomenutí Vytvoření instance parseru XMLReader xmlreader = XMLReaderFactory.createXMLReader(); Registrace handleru xmlreader.setcontenthandler(

Více

SQL - trigger, Databázové modelování

SQL - trigger, Databázové modelování 6. přednáška z předmětu Datové struktury a databáze (DSD) Ústav nových technologií a aplikované informatiky Fakulta mechatroniky, informatiky a mezioborových studií Technická univerzita v Liberci jan.lisal@tul.cz

Více

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti Práce s databází Specifikace JDBC Pro práci s relačními databázemi poskytuje Java rozhraní JDBC Java Database Connectivity. Specifikace tohoto rozhraní má několik verzí. Verze 1.x je součástí SDK již od

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Obrázek 6.14: Prohlížec nápovedy

Obrázek 6.14: Prohlížec nápovedy JavaHelp Základní popis systému JavaHelp Soucástí vetšiny interaktivních aplikací je nápoveda (help) aplikace v Jave nejsou výjimkou. Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené

Více

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz Vaše jistota na trhu IT Balíčky Rudolf Pecinovský rudolf@pecinovsky.cz Problémy velkých aplikací Rozsáhlé aplikace používají velké množství názvů objektů a jejich zpráv, které různé části programu sdílí

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK listopad 2009 souhrn v1 Červené dobře (nejspíš), modré možná Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů *Databáze může získat z OID seznam

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

7.6 Další diagramy UML

7.6 Další diagramy UML 7.6 Další diagramy UML 7.6.1 Moduly (balíčky - package) a kolaborace (collaboration) Jak rozložit rozsáhlý systém na menší? - seskupování tříd (prvků modelu) do jednotek vyšší úrovně (package v UML). UI

Více

Roční periodická zpráva projektu

Roční periodická zpráva projektu WAK-1F44C-2005-2 WAK System Název projektu: Automatizovaná výměna dat mezi informačními systémy krizového řízení v dopravě s jednotným univerzálním a implementovaným rozhraním založeným na standardu webových

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server Soketové připojení Při socketovém připojení spolu komunikují dvě nezávislé JVM pomocí streamů odpovídajících typů. Po síti můžete posílat textové i binární informace, je možno posílat i objekty, které

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems petr.slechta@sun.com

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems petr.slechta@sun.com X33EJA Enterprise Java Petr Šlechta Sun Microsystems petr.slechta@sun.com Web Services (dodatek) Dynamické vyvolání WS Pomocí SAAJ (SOAP with Attachments API for Java) Dynamicky vytvořit SOAP zprávu (např.

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Procesy, vlákna Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro

Více

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

Programování v jazyku C# II. 5.kapitola

Programování v jazyku C# II. 5.kapitola Programování v jazyku C# II. 5.kapitola Obsah O ADO.NET Spojení s DB Příkazy Jednoduché čtení DataSet 2/28 ADO.NET ADO - ActiveX Data Object Orientováno na webové aplikace neexistence stavu v HTTP Obecný

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

Testovací metoda. Testovací metoda. public class SimpleTest {

Testovací metoda. Testovací metoda. public class SimpleTest { Testování TestNG public class SimpleTest { @BeforeClass public void setup() { // code that will be invoked // when this test is instantiated @Test public void afasttest() { System.out.println("Fast test");

Více

Server-side technologie pro webové aplikace

Server-side technologie pro webové aplikace Server-side technologie pro webové aplikace PIA 2011/2012 Téma 6 Copyright 2006 Přemysl Brada, Západočeská univerzita Server-side scriptování Cíl dynamické generování webového obsahu/rozhraní integrace

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha OSGi Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha NIO Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

Jazyk C++ I. Šablony 2

Jazyk C++ I. Šablony 2 Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()

Více

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití: Architektura webové aplikace, funkce jednotlivých vrstev, životní cyklus standardizovaných komponent Java EE, Servlety, JSP, frameworky, návrhové vzory 1. Distribuce Javy Distribuce Javy se liší podle

Více

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha ANT Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Jakub Čermák http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více