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



Podobné dokumenty
Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

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

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems

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

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

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

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);

DPKOM_10 Transakce 1

Zápisování dat do databáze

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka

Transakce a zamykání Jiří Tomeš

Databáze II. 2. přednáška. Helena Palovská

Paralelní přístup k databázi

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

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

Tvorba informačních systémů

9. Transakční zpracování

KIV/PIA 2013 Jan Tichava

Databázové systémy úvod

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

Jazyk C# - přístup k datům

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Enterprise Java Beans 3.0

Object-relational mapping (JPA, Hibernate)

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

O Apache Derby detailněji. Hynek Mlnařík

PA165: Úvod do Java EE. Petr Adámek

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Šifrování ve Windows. EFS IPSec SSL. - Encrypting File System - Internet Protocol Security - Secure Socket Layer - Private Point to Point Protocol

Softwarové komponenty a Internet

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Databáze II. 1. přednáška. Helena Palovská

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

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

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Bezpečnost elektronických platebních systémů

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

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

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

RMI Remote Method Invocation

Asymetrická kryptografie a elektronický podpis. Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz

PHP a Large Objecty v PostgreSQL

Verzování a publikace dat na webu za pomoci PostgreSQL

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Distribuované systémy a výpočty

Elektronický podpis. Marek Kumpošt Kamil Malinka

Bezpečnost internetového bankovnictví, bankomaty

Jazyk C# - přístup k datům

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Databáze I. 5. přednáška. Helena Palovská

Co je Czech Point? Podací Ověřovací Informační Národní Terminál, zredukovat přílišnou byrokracii ve vztahu

8.2 Používání a tvorba databází

Databázové systémy a SQL

Návrhové vzory pro J2EE

Java a Caché IV: Manipulace s objekty

Projekt 2 - Nejčastější chyby. Ing. Dominik Breitenbacher

KTE / ZPE Informační technologie

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

Jazyk C# - přístup k datům

PV157 Autentizace a řízení přístupu

Datablades včera, dnes a zítra

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

UJO Framework. revoluční architektura beans. verze

Databázové systémy a SQL

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

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

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

Protokol pro zabezpečení elektronických transakcí - SET

Digitální důvěra osnova přednášky

Čipové karty Lekařská informatika

Programování II. Návrh programu I 2018/19

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

1. Programování proti rozhraní

Maturitní témata Školní rok: 2015/2016

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Text úlohy. Systémový katalog (DICTIONARY):

Použití databází na Webu

Co je nového v Java EE 6

Databázové a informační systémy

České vysoké učení technické v Praze FAKULTA INFORMAČNÍCH TECHNOLOGIÍ katedra počítačových systémů. Digitální důvěra. Jiří Smítka

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

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Transakce Profinit. All rights reserved.

Databázové systémy I

Mělká a hluboká kopie

Návrhové vzory pro J2EE. Miroslav Beneš

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Čipové karty úvod, Ing. Jiří Buček. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze

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

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

FIREBIRD relační databázový systém. Tomáš Svoboda

Transkript:

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 (BI-EJA) Technologie programování v jazyku Java (X36TJV) Katedra softwarového inženýrství Fakulta informačních technologií ČVUT v Praze Letní semestr 2010/2011, přednáška č. 5 Zdeněk Troníček, 2011

Agenda Transakce Řízení Zámky Izolační úrovně Security 2

Transakce (opak.) Transakce je posloupnost operací, která se tváří jako jedna velká, atomická operace. BEGIN COMMIT ROLLBACK převod peněz účet 1 účet 2 nákup v elektronickém obchodě: 1) platnost karty 2) zboží na skladě 3) platba kartou 4) expedice zboží 3

Programové řízení transakcí @Stateful @TransactionManagement( TransactionManagementType.BEAN ) public class ManagerBean implements ManagerLocal { @Resource UserTransaction ut; } public void addaccount( String type ) throws Exception { try { ut.begin();... ut.commit(); } catch ( Exception e ) { ut.rollback(); } } 4

Deklarativní řízení transakcí (1) @Stateful public class ManagerBean implements ManagerLocal {... @TransactionAttribute( TransactionAttributeType.REQUIRES_NEW ) public void addaccount( String type ) {... } } 5 Transaction attribute types: REQUIRED REQUIRES_NEW MANDATORY NEVER NOT_SUPPORTED SUPPORTS EJBObject BEGIN COMMIT Bean

Deklarativní řízení transakcí (2) @Stateful public class ManagerBean implements ManagerLocal { @Resource @Resource SessionContext SessionContext ctx; ctx;... public void addaccount( String type ) { if(... ) { } } ctx.setrollbackonly(); } if(... ) { } throw new EJBException( ); ); ROLLBACK 6

Transakční model Flat model (JEE) T1 begin Nested model T1 suspend nezávislá transakce T1 begin vnořená transakce T2 begin T2 begin T2 commit T2 commit T1 resume T1 rollback T1 rollback 7

Transakce - příklad 1 metodab REQUIRED 2 metodac REQUIRED T1 begin T2 begin metodaa REQUIRED 3 metodad REQUIRES_NEW 4 metodae REQUIRED T1 commit T2 commit T3 begin 5 metodaf NOT_SUPPORTED 6 metodag REQUIRED T3 commit 8

Zamykání dat (JavaDB) Zámky Shared (S) pro čtení Exclusive (X) pro zápis čas Transakce 1 begin zamkne řádek A (zámek X)... commit (uvolní zámek) Transakce 2 begin čeká na zámek k řádku A... zamkne řádek A (zámek X)... 9

Lost Update User 1 Account: 1 Balance: 123 124 User 2 Account: 1 Balance: 123 Brno Address: Praha Address: Praha 1 2 3 4 databáze 1: 1, 123, Praha 2: 1, 123, Praha 3: 1, 124, Praha 4: 1, 123, Brno 10

Pessimistic Locking User 1 Account: 1 Balance: 123 124 User 2 Account: 1 Balance: 124 Brno Address: Praha Address: Praha 1 3 2 4 1: zamkne řádek 2: uvolní zámek databáze 1: 1, 123, Praha 2: 1, 124, Praha 3: 1, 124, Praha 4: 1, 124, Brno 11

Optimistic Locking (1) přidáme sloupec verze před každou změnou zkontrolujeme číslo verze: pokud nesouhlasí, změnu odmítneme po každé změně zvýšíme číslo verze o 1 Account: 1 Balance: 123 Address: Praha Version: 1 124 2 1 2: je verze v DB rovna 1? databáze 12

Optimistic Locking (2) User 1 Account: 1 Balance: 123 124 User 2 Account: 1 Balance: 123 Brno Address: Praha Address: Praha Version: 1 Version: 1 1 2 3 4 databáze 1: 1, 123, Praha, 1 2: 1, 123, Praha, 1 3: 1, 124, Praha, 1 (2) 4: 1, 123, Brno, 1 13

Java Persistence API @Entity public class Account { @Version private Long version;... } Podporované typy @PersistenceContext private EntityManager em; // may throw OptimisticLockException public void updateaccount( Account acc ) { short, Short int, Integer long, Long Timestamp } em.merge( acc ); 14

Proč potřebujeme transakce? HOSPODY NÁZEV PIVO CENA Bar 11 Budvar 20 Bar 11 Kozel 25 současně: Rumcajs: (max) (min) Manka: (del) (ins) (max) SELECT MAX(CENA) FROM HOSPODY WHERE NÁZEV='Bar 11' SELECT MIN(CENA) FROM HOSPODY WHERE NÁZEV='Bar 11' (min) DELETE FROM HOSPODY WHERE NÁZEV='Bar 11' INSERT INTO HOSPODY VALUES( 'Bar 11', 'Radegast', 30 ) (del) (ins) 15

Řazení operací Nepoužijeme-li transakce, pak jediná omezení jsou: (max) před (min) (del) před (ins) Může tedy nastat: (max)(del)(ins)(min) (del) (ins) (min) Bar 11 Bar 11 Budvar Kozel 20 25 (max): 25 (del) (ins) Bar 11 Radegast 30 (min): 30 max < min 16

Řešení: transakce (max) a (min) provedeme v transakci 25 (max) (min) (del) (ins) 20 (del) (max) (min) (ins) NULL NULL (del) (ins) (max) (min) 30 30 17

Shared Locks Long duration begin lock row A Short duration begin lock row A commit release lock release lock commit zámky držíme do konce transakce zámky uvolníme bezprostředně po vyčtení dat 18

Phantom ACCOUNT ID BALANCE 1 101 T1 BEGIN SELECT * FROM ACCOUNT WHERE BALANCE>100 vybere 1 řádek 2 50 T2 BEGIN 3 105 INSERT INTO ACCOUNT VALUES( 3, 105 ) T2 COMMIT SELECT * FROM ACCOUNT WHERE BALANCE>100 vybere 2 řádky 19

Non-repeatable Read ACCOUNT ID BALANCE 1 101 T1 BEGIN SELECT * FROM ACCOUNT WHERE BALANCE>100 uvolníme zámky 2 50 T2 BEGIN ACCOUNT ID BALANCE 1 200 2 50 UPDATE ACCOUNT SET BALANCE=200 WHERE ID=1 T2 COMMIT SELECT * FROM ACCOUNT WHERE BALANCE>100 vrátí jiný výsledek 20

Izolační úrovně úroveň long duration short duration SERIALIZABLE REPEATABLE_READ X, S X, S zamyká predikáty READ_COMMITTED X S READ_UNCOMMITTED X nepoužívá zámky S nižší izolace vyšší souběžnost (concurrency) anomálie: phantoms non-repeatable read dirty read 21

Izolační úrovně v Javě Connection: settransactionisolation( int level ) TRANSACTION_SERIALIZABLE TRANSACTION_REPEATABLE_READ TRANSACTION_READ_COMMITTED TRANSACTION_READ_UNCOMMITTED izolační úroveň určuje, jak vidíme DB SERIALIZABLE READ_COMMITTED DB 22

Distribuované transakce javax.transaction javax.transaction.xa XAResource Resource Manager 1 Application Transaction Manager Resource Manager 2 23 XAResource xar = r1.getxaresource(); xar.start( xid1 );... xar.end( xid1 ); xar.start( xid2 );... xar.end( xid2 ); Resource Manager 3 2-phase commit

Security Základní pojmy autentizace = ověření totožnosti autorizace = přidělení práv confidentiality integrity Vlastnosti container-managed role-based end-to-end 24 @Stateless @DeclareRoles( "manager" ) public class BankManager {... @RolesAllowed( "manager" ) public void addcustomer(... ) {... } } @DeclareRoles @RolesAllowed @PermitAll @DenyAll

Uživatelské role Uživatelé aplikačního serveru user 1 user 2 user 3 Role Manager Případy užití Create Account Group 1 user 4 user 5 user 6 Customer Show Account 25 aplikační server JEE aplikace

Autentizace v HTTP HTTP BASIC nešifrované HTTP DIGEST - pouze kontrolní součet Form Based HTTPS Client - používá certifikáty Formulářová autentizace: <form method="post" action="j_security_check"> <input type="text" name="j_username"> <input type="password" name="j_password"> <input type="submit" value="login"> </form> 26

Certifikáty Kryptografie symetrická (tajný klíč) asymetrická (soukromý a veřejný klíč) Algoritmy DES RSA MD5, SHA Certifikát veřejný klíč jméno vlastníka platnost do název vydavatele (CA) sériové číslo digitální podpis Certificate Sign Request Certificate Certifikační autorita 27

Otázky & odpovědi tronicek@fit.cvut.cz