Transakcje zarządzane kontenerem

Slides:



Advertisements
Podobne prezentacje
Bazy danych II Transakcje Piotr Górczyński 25/08/2001.
Advertisements

Programowanie sieciowe w Javie
Wstęp do strumieni danych
C++ wykład 2 ( ) Klasy i obiekty.
Jarosław Kuchta Monitory.
Mgr inż.Marcin Borkowski Podstawy Java Część II
Bezpieczeństwo wyjątków w C++: OpenGL
Odwzorowanie obiektowo-relacyjne
Java i bazy danych Programowanie z wykorzystaniem JDBC mgr inż. Piotr Kopniak.
Relacyjne Bazy Danych wykład XIII
Artur Jonak empolis Polska Sp. z o.o.
Nguyen Hung Son Uniwersytet Warszawski
Projektowanie Aplikacji Komputerowych
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
Wycofywanie potwierdzonych transakcji
Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: Licencja: Open Source.
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Programowanie sieciowe w Javie
Synchronizacja Rozdział 5.
Platforma J2EE korporacyjny standard wytwarzania złożonych systemów informatycznych Autor: Jarosław Lis Warszawa, 2006r.
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Zarządzanie transakcjami

Język Java Wielowątkowość.
Spring podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Zarządzanie transakcjami w SQL Server
Zarządzanie transakcjami Wykład S. Kozielski. Zarządzanie transakcjami Transakcja – jedna lub więcej operacji na bazie danych stanowiących pewną logiczną
Wyjątki, rzutowanie typów, operator instanceOf
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Programowanie urządzeń mobilnych – wykład IV
Message-Driven Bean.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tworzenie aplikacji mobilnych
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Seminarium problemowe
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Źródło problemu Plan prezentacji Technologia Java EE
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
Informatyka Stosowana – ROK II / III
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Sławomir Staśkiewicz JBossAS i EJB 3.1 Sławomir Staśkiewicz
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Programowanie Obiektowe – Wykład 6
Dzisiejsze zajęcia będą wyjątkowe…
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Wątki, programowanie współbieżne
Programowanie Obiektowe – Wykład 2
PGO Interfejsy Michail Mokkas.
Założenia projektowe Javy
Tworzenie wątków w Javie
Zapis prezentacji:

Transakcje zarządzane kontenerem Kompatybilność z wszystkimi typami EJB jak: encji, sesyjne, sterowane komunikatami. Brak oznaczeń początku i końca transakcji w kodzie EJB Prostota użycia. Kontener rozpoczyna transakcje tuz zaraz po uruchomieniu metody i zatwierdza ja tuz przed jej zakończeniem. Pojedyncza metoda może być związana z co najwyżej jedna transakcja. (wiele bądź zagnieżdżone transakcje nie są dozwolone) Nie każda metoda musi być związana z transakcja. Podczas składowania beana określa się które metody będą wiązane z transakcjami

Atrybuty transakcji Atrybuty transakcji kontrolują zasięg transakcji

Atrybuty transakcji mogą mieć wartość: Required RequiresNew Mandatory NotSupported Supports Never Atrybuty transakcji można zmieniać podczas wielu faz rozwijania aplikacji (umieszczone w deployment descriptor)

Pierwszeństwo maja reguły ustalone dla konkretnej metody beana przed regułami dotyczącymi ogólnie całego beana. Reguły dla odpowiednich metod zależą od typu beana Dla beanow sesyjnych można stosować transakcje do business-role metod ale nie można do metod typu create beany encji wymagają reguł dla metod typu: create, remove, business, i finder Beany MDB wymagają reguł dla metody onMessage

Wycofywanie transakcji zarzadzanych kontenerem Wycofanie transakcji może być spowodowane przez: Rzucenie wyjątku systemowego Wywołanie metody setRollbackOnly() (rzucenie wyjątku metody nie spowoduje wycofania transakcji) Zmienne instancyjne w beanach encji przywracane są automatycznie poprzez wywołanie metody ejbLoad Zmienne sesyjne w beanach sesyjnych nie są przywracane po wycofaniu transakcji i trzeba to zrobić np poprzez interfejs synchronizacji sesji.

public void transferToSaving(double amount) throws InsufficientBalanceException { checkingBalance -= amount; savingBalance += amount; try { updateChecking(checkingBalance); if (checkingBalance < 0.00) { context.setRollbackOnly(); throw new InsufficientBalanceException(); } updateSaving(savingBalance); } catch (SQLException ex) { throw new EJBException ("Transaction failed due to SQLException: " + ex.getMessage());

Synchronizacja zmiennych instancyjnych bean-ów sesyjnych Metoda afterBegin() public void afterBegin() { System.out.println("afterBegin()"); try { checkingBalance = selectChecking(); savingBalance = selectSaving(); } catch (SQLException ex) { throw new EJBException("afterBegin Exception: " + ex.getMessage()); }

Metoda beforeCompletion() (ostatnia szansa na wycofanie transakcji) Metoda afterCompletion() public void afterCompletion(boolean committed) { System.out.println("afterCompletion: " + committed); if (committed == false) { try { checkingBalance = selectChecking(); savingBalance = selectSaving(); } catch (SQLException ex) { throw new EJBException("afterCompletion SQLException:       " + ex.getMessage()); }

Metody niedozwolone w transakcjach sterowanych kontenerem Metody commit, setAutoCommit, i rollback z java.sql.Connection Metoda getUserTransaction z javax.ejb.EJBContext Jakakolwiek metoda z javax.transaction.UserTransaction

Transakcje zarzadzane beanami Ten rodzaj transakcji mogą mieć beany encji i sesyjne Jawnie wewnątrz beana podaje się początek i koniec transakcji Nie są już ograniczone na zagnieżdżone transakcje jak w przypadku transakcji zarządzanych kontenerem Transakcje zarządzane przez beany musza być obsługiwane albo przez JDBC albo JTA

Transakcje JTA (Java Transaction API) Transakcje JDBC Kontrolerem jest menadżer transakcji DBMS Metody commit i rollback z java.sql.Connection Transakcje JTA (Java Transaction API) Są zarządzane przez menadżera transakcji J2EE Pozwala on np na obsługę wielu baz danych od różnych dostawców. (praca z heterogeniczna baza) Minus J2EE nie wspomaga zagnieżdżonych transakcji Metody begin, commit, i rollback z javax.transaction.UserTransaction

public void ship (String productId, String orderId, int quantity) { try { makeConnection(); con.setAutoCommit(false); updateOrderItem(productId, orderId); updateInventory(productId, quantity); con.commit(); } catch (Exception ex) { con.rollback(); throw new EJBException("Transaction failed: " + ex.getMessage()); } catch (SQLException sqx) { throw new EJBException("Rollback failed: " + sqx.getMessage()); } } finally { releaseConnection(); }

public void withdrawCash(double amount) { UserTransaction ut = context.getUserTransaction(); try { ut.begin(); updateChecking(amount); machineBalance -= amount; insertMachine(machineBalance); ut.commit(); } catch (Exception ex) { ut.rollback(); } catch (SystemException syex) { throw new EJBException ("Rollback failed: " + syex.getMessage()); } throw new EJBException ("Transaction failed: " + ex.getMessage());

Metody zabronione Metoda getRollbackOnly() Metoda setRollbackOnly() z EJBContext interface (metody te powinny być używane tylko w transakcjach zarządzanych kontenerem)

Podsumowanie transakcji dla EJB Standardowym ustawieniem transakcji jest sterowanie kontenerem z opcja required.

Transaction Timeouts W pliku domain.xml można ustawić timeout po którym rozpoczęta transakcja zostanie anulowana. Odpowiada za to kontroler EJB Ustawienie tego parametru na wartość 0 wyłącza timeout. Funkcje ta można ustawić tylko w transakcjach sterowanych kontenerem.

(widocznosci modyfikowanych danych) Poziomy izolacji (widocznosci modyfikowanych danych) Poziom izolacji beanow encji sterowanych kontenerem modyfikowany jest w pliku sun-cmp-mapping.xml i standardowo ustawiony jest na READ_COMMITED dla wszystkich rodzajów beanow, ale przy transakcjach sterowanych beanem do ustawiania poziomu izolacji służy metoda: con.setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED)

Uaktualnianie wielu baz danych J2EE gdy kontener zarządza transakcjami oraz przy użyciu JTA (zarządzaniu beanami) 2 rodzaje rozwiązań