Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Podobne dokumenty
Dostęp do baz danych z aplikacji J2EE

Obs³uga transakcji rozproszonych w jêzyku Java

Enterprise JavaBeans (EJB)

JDBC (Java Database Connectivity vit )

PRZEGLĄD DOSTĘPNYCH IMPLEMENTACJI STANDARDÓW PRZETWARZANIA TRANS- AKCJI ROZPROSZONYCH (DTP) XA ORAZ TX

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

Słonie pracują w stadzie

EJB 3.0 (Enterprise JavaBeans 3.0)

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Praktyczne porównanie mechanizmów 2PC i 3PC dla rozproszonych baz danych

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Transakcje w systemach Java Enterprise Korzystanie z systemów kolejkowania w serwerach aplikacji

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB)

JAVA I BAZY DANYCH. MATERIAŁY:

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Dostęp do baz danych w aplikacjach Java EE

Wybrane działy Informatyki Stosowanej

1 Wprowadzenie do J2EE

Wprowadzenie. Dariusz Wawrzyniak 1

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Bazy danych. Dr inż. Paweł Kasprowski

Transakcje w systemach Java Enterprise Korzystanie z baz danych w serwerach aplikacji

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Zarządzanie transakcjami

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE

Kurs programowania aplikacji bazodanowych

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Bazy danych. Andrzej Łachwa, UJ, /15

Podstawy frameworka Spring

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Wybrane działy Informatyki Stosowanej

Hbase, Hive i BigSQL

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Enterprise Java Beans wykład 7 i 8

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Zagadnienia projektowania aplikacji J2EE

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Encyjne komponenty EJB

Aplikacje Internetowe, Servlety, JSP i JDBC

Wprowadzenie do Enterprise JavaBeans 2.0

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Bazy danych 2. Wykład 1

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

przykłady problemów; realizacja dostaw części od producenta do klienta:

Middleware wprowadzenie października 2010

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

JBoss: MetaMatrix, Mobicents, Seam, Rools, ESB

Enterprise JavaBeans (EJB)

POSTANOWIENIE. z dnia 20 sierpnia 2018 roku

Wprowadzenie (1) Przetwarzanie transakcyjne. Wprowadzenie (2) Problemy przygotowania aplikacji

Usługa TimerService

Aplikacje internetowe i rozproszone - laboratorium

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Wykład 1 Inżynieria Oprogramowania

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Budowa komponentów Enterprise JavaBeans

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Język UML w modelowaniu systemów informatycznych

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Aplikacje internetowe - laboratorium

Oracle PL/SQL. Paweł Rajba.

edziennik Ustaw Opis architektury

Bazy danych 9. SQL Klucze obce Transakcje

Właściwości transakcji

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Enterprise JavaBeans

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

Java Server Faces narzędzie do implementacji w wy prezentacji

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Hurtownie danych - przegląd technologii

Pojęcie bazy danych. Funkcje i możliwości.

SiR_13 Systemy SCADA: sterowanie nadrzędne; wizualizacja procesów. MES - Manufacturing Execution System System Realizacji Produkcji

Transakcje w systemach Java Enterprise Wprowadzenie do systemów transakcyjnych oraz mechanizmów obsługi transakcji w serwerach aplikacji

SOP System Obsługi Parkingów

Transkrypt:

Obsługa transakcji rozproszonych w języku j Java Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Plan prezentacji Transakcje i ich własności Proste transakcje w JDBC Transakcje rozproszone w JDBC 2.0 Transakcje na platformie J2EE Standard JTA JTA w aplikacjach Java (EJB) Podsumowanie 2

Czym jest transakcja? Transakcja to podstawowa logiczna jednostka interakcji użytkownika z systemem Transakcja to sekwencja operacji, która musi zakończyć się sukcesem w całości w przeciwnym wypadku przywrócony musi być stan początkowy Przykład transakcji: Operacja przelewu kwoty x z konta A na konto B: 1) Pobranie kwoty x z konta A 2) Dodanie kwoty x do konta B 3

Własności transakcji (ACID) Atomowość (ang. atomicity) zbiór operacji składowych transakcji musi być wykonany w całości lub wcale Spójność (ang. consistency) transakcja przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego Izolacja (ang. isolation) polega na logicznym odseparowaniu od siebie transakcji współbieżnie wykonywanych w systemie (możliwe różne poziomy izolacji) Trwałość (ang. durability) Odporność wyników zatwierdzonej transakcji na awarię systemu 4

Transakcje lokalne i globalne Transakcje lokalne: Dotyczą jednego serwera bazy danych Obsługiwane przez dany serwer bazy danych Transakcje globalne (rozproszone): Dotyczą więcej niż jednego serwera bazy danych Serwery mogą pochodzić od różnych dostawców (heterogeniczne transakcje globalne) Obsługiwane przez zarządcę transakcji (ang. transaction manager): Zewnętrzny (np. dostępny w ramach serwera aplikacji) Wbudowany w jeden z serwerów biorących udział w transakcji 5

2-Phase Commit Dla zapewnienia własności atomowości transakcji rozproszonych opracowano protokół zatwierdzania dwufazowego (ang 2-Phase Commit) Faza 1 Prepare: węzły (serwery) biorące udział w transakcji przygotowują się do jej zatwierdzenia (na żądanie koordynatora transakcji) Faza 2 Commit: gdy wszystkie węzły są gotowe do zatwierdzenia transakcji następuje jej rzeczywiste zatwierdzenie 6

Standardy dostępu do baz danych z aplikacji języka Java JDBC - Opracowany przez Sun Specyfikuje interfejsy implementowane w postaci sterowników JDBC dla poszczególnych SZBD JDBC 1.0 transakcje lokalne JDBC 2.0 transakcje rozproszone, efektywność JDBC 3.0 drobne usprawnienia (np. SAVEPOINT) SQLJ - Standard ISO/ANSI Naturalne i mniej podatne na błędy zagnieżdżanie SQL w kodzie Java Powszechnie implementowany poprzez prekompilację do wywołań JDBC (w zakresie transakcji funkcjonalność zależy od sterowników JDBC) 7

Transakcje lokalne w JDBC (1/2) Obiekt Connection uzyskany poprzez DriverManager Rozwiązanie dostępne od JDBC 1.0 // rejestracja sterownika Oracle JDBC DriverManager.registerDriver(new oracle.jdbc.oracledriver()); // otwarcie połączenia z bazą poprzez DriverManager Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@host1:1521:orcl", "scott","tiger"); // wyłączenie trybu automatycznego zatwierdzania conn.setautocommit(false); // utworzenie i wykonanie instrukcji SQL Statement stmt = conn.createstatement(); stmt.executeupdate("delete FROM emp WHERE empno = 3981"); // zatwierdzenie transakcji conn.commit(); 8

Transakcje lokalne w JDBC (2/2) Obiekt Connection uzyskany poprzez DataSource Rozwiązanie dostępne od JDBC 2.0 Źródła danych mogą oferować dodatkową funkcjonalność: Connection pooling Wsparcie dla transakcji rozproszonych Typowo źródła danych dostępne przez JNDI (np. udostępnione aplikacji przez serwer aplikacji w oparciu o plik konfiguracyjny)... // uzyskanie obiektu reprezentującego kontekst JNDI Context ctx = new InitialContext(); // wyszukanie źródła danych przez nazwę logiczną OracleDataSource ds = (OracleDataSource)ctx.lookup("jdbc/FinanceDB"); // uzyskanie obiektu Connection Connection conn = ds.getconnection();... 9

Transakcje rozproszone w JDBC 2.0 Mechanizmy obsługi transakcji rozproszonych w JDBC 2.0 stanowią implementację standardu XA XA jest ogólnym standardem dla transakcji rozproszonych stanowiącym część standardu X/Open Funkcjonalność XA zapewnia zarządcy transakcji koordynację poszczególnych gałęzi transakcji (ang. transaction branches) reprezentowanych przez zasoby XA (XA resource) i zatwierdzanie lub wycofywanie gałęzi transakcji 10

Elementy standardu XA Źródła danych XA (ang. XA data sources) - jedno źródło danych dla jednej bazy danych biorącej udział w transakcji Połączenia XA (ang. XA connections) - uzyskane ze źródeł danych XA, służące do uzyskania instancji XA resource i połączeń JDBC Zasoby XA (ang. XA resources) - wykorzystywane przez zarządcę transakcji do koordynacji gałęzi transakcji rozproszonej Metody: start, end, prepare, commit, i rollback Identyfikatory transakcji (ang. transaction IDs) służące do identyfikacji poszczególnych gałęzi transakcji rozproszonych 11

Przebieg transakcji rozproszonej XA 1) Przygotowanie źródeł danych, połączeń i identyfikatorów gałęzi transakcji 2) Rozpoczęcie gałęzi transakcji 3) Wykonanie operacji SQL w poszczególnych gałęziach transakcji 4) Zakończenie gałęzi transakcji 5) Przeprowadzenie zatwierdzania dwufazowego W praktyce funkcjonalność XA jest ukryta przed aplikacjami użytkowymi i implementowana na poziomie serwera aplikacji i zarządcy transakcji 12

Transakcje na platformie J2EE Realizacja transakcji rozproszonych na platformie J2EE opiera się na współpracy oprogramowania różnego typu: Zarządca transakcji (ang. transaction manager) Serwer aplikacji (ang. application server) np. serwer EJB Zarządca zasobów (ang. resource manager) Dostępny dla aplikacji poprzez bibliotekę programową Najczęściej serwer bazy danych (dostępny poprzez JDBC) Transakcyjna aplikacja np. komponentowa aplikacja EJB Zarządca komunikacji (ang. communication resource manager) 13

Standard JTA (Java( Transaction API) Specyfikuje interfejsy między zarządcą transakcji (zgodnym z JTS Java Transaction Service) a innymi jej uczestnikami Oparty na specyfikacji JDBC 2.0 i standardzie XA Obejmuje trzy główne części: Interfejs wysokiego poziomu umożliwiający aplikacji transakcyjnej wytyczanie granic transakcji (javax.transaction.usertransaction) Interfejs zarządcy transakcji umożliwiający serwerowi aplikacji obsługę wyznaczania granic transakcji dla aplikacji zarządzanych przez dany serwer aplikacji (javax.transaction.transactionmanager) Mapowanie do języka Java interfejsu XA umożliwiającego transakcyjnemu zarządcy zasobów udział w globalnej (rozproszonej) transakcji zarządzanej przez zewnętrznego zarządcę transakcji (javax.transaction.xa.xaresource) 14

Funkcjonalność JTA - Schemat 15

JTA w aplikacjach J2EE Wykorzystywany przede wszystkim w transakcjach realizowanych przez komponenty EJB Również dostępny w serwletach/jsp Niektóre typy EJB (sesyjne, komunikatowe) mogą korzystać z transakcji JDBC (dla transakcji lokalnych) Realizacja transakcji JTA w aplikacji J2EE wymaga: Rejestracji zasobów Rejestracja zasobów wiąże się z konfiguracją źródeł danych w jednym z plików konfiguracyjnych aplikacji Od liczby wykorzystanych zasobów w transakcji zależy czy użyty będzie mechanizm 2-Phase Commit Wyznaczenia granic transakcji - 2 możliwe podejścia: Przez komponent (ang. bean-managed transaction) Przez kontener (ang. container-managed transaction) 16

Transakcje zarządzane przez komponent Aplikacja jawnie rozpoczyna i kończy transakcję przez interfejs UserTransaction Dozwolone dla sesyjnych i komunikatowych EJB, niedozwolone dla encyjnych EJB, jedyna możliwość wykorzystania transakcji JTA w serwletach / JSP... Context ctx = new InitialContext(); UserTransaction ut = (UserTransaction) ctx.lookup("java:comp/env/usertransaction"); // rozpoczęcie transakcji ut.begin(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/oracleds"); // uzyskanie obiektu Connection po (!) rozpoczęciu transakcji Connection conn = ds.getconnection();... // zatwierdzenie transakcji ut.commit();... 17

Transakcje zarządzane przez kontener Dostępne tylko dla komponentów EJB (dla encyjnych jedyna możliwość) Transakcją steruje kontener, na podstawie informacji podanych w sposób deklaratywny w pliku deployment descriptor (tam również specyfikacja czy transakcje zarządzane przez kontener czy komponent) Deklaracje mają postać atrybutu transakcyjnego (Required, RequiresNew, Supports, NotSupported, Mandatory, Never) podanego dla całego komponentu lub poszczególnych jego metod 18

Podsumowanie Specyfikacje dotyczące obsługi transakcji rozproszonych w języku Java są implementacjami ogólnych standardów Dla skomplikowanych operacji transakcyjnych (w tym transakcji rozproszonych) dobrym rozwiązaniem jest technologia EJB Technologia EJB i standard JTA pozwalają na realizację transakcji lokalnych i rozproszonych na tej samej zasadzie (z punktu widzenia aplikacji) 19