Java Transaction Service (JTS 1.1)
- Úvod
- Funkcionalita Transaction Manageru
- Implementace Transaction Manageru
- Reference
1. Introduction
JTS specifikuje způsob implementace Transaction Manageru (CORBA OTS), který
splnuje JTA specifikaci [1] na high-level úrovni a
implementuje mapování Javy na OMG Object Transaction Service (OTS) 1.1
specifikaci v low-level úrovni.
JTS nám tedy umožnuje použít pro implementaci distribuované aplikace
(používající transakce) rozšiřující API jazyka java --
Java Transaction API[1], při zachování
dosažitelnoti komponent (objektů) aplikace prostředky CORBY.
Blíže v odstavci Implenetace Transaction Manageru
JTS používá rozhraní CORBA/OTS pro zajištění interoperability
a portability (tzn. používá rozhraní CosTransaction a CosTSPortability).
Tyto rozhraní definují standardní mechanismus pro jakoukoliv
implementaci která používá IIOP (Internet InterORB protokol)
pro vytváření a prezentaci kontextu (obsahu) transakce mezi
JTS Transaction Managery.
1.1 Background
JTS předpokládá při implementaci klientské aplikace (objektu) jako
samostatné Java aplikace, nebo java aplikace v rámci EJB.
Distribuované transakce se Enterprise Java middleware zkládají
pěti účastníků:
- Transaction manager
- Application server
- Resource manager
- Application program
- Communication resource manager
Každý z těchto účastníků přispívá do procesu distribuované
transakce implementací jiné části API (s odlišnou funkčností).
Resource Adapter je SW knihovna na úrovni systému, kterou používá
aplikační server nebo klient k připojení se k Resource Manageru. Je
přístupný jako knihovna a nachází se tedy ve stejném adresovém
prostoru.. Resource Managerem může být např. JDBC driver pro
komunikaci s relační databází, ODMG driver pro komunikaci s
objektovou databází, nebo JRFC pro SAP R/3 atd..
Diagram níže ukazuje high-level API viděné z pohledu Transaction
Managera, který implementuje JTS specifikaci.
2. Funkcionalita Transaction Manageru
Transaction Manager poskytuje následující služby:
- Davá aplikacím a aplikačním serverům schopnost ovládat rozsah a
trvání transakce.
- Dovoluje četným aplikačním komponentám vykonat práci která je
částí nějaké jednoduché, atomické transakce.
- Poskytuje schopnost spojovat globální transakce s prací
provedenou u transakčních zdrojů.
- Koordinovat dokončení globálních transakcí přes četné Resource
managery.
- Podporuje synchronizace transakce.
- Má schopnost interoperovat s jinými implmentacemi Transaction
Managery použitím standartních rozhraní CORBA ORB/TS
(toto je pro klienty Transaction Managera transparentní).
3. Implementace Transaction Manageru
Transaction Manageru musí implementovat rozhraní JTA pro podporu
aplikačních serverů a Resource Managerů. Volitelná je podpora JDBC
1.0 a resource managerů nepoužívajících JTA. Volitelná je také
podpora aplikačních entit CORBA/OTS jako Transactional Client,
Transactional Server, Recoverable Server.
3.1 Podpora pro JTA
Transaction Manager poskytuje plnou podporu Java Transaction API.
- Vymezení transakce
- Transaction Manager implementu je nasledující rozhraní JTA, jenž
používají aplikační servery a samosttané Java aplikace pro řízení
transakce.
- javax.transaction.TransactionManager
- javax.transaction.Transaction
- javax.transaction.UserTransaction
- Synchronizace
- Transaction Manager podporuje synchronizace transakcí. Pomocí
Synchronization callback objektů určenných pro registraci
aplikačním serverem. Transaction Manager vyvolává synchronizační
metody před a po ukončení transakce. K registrace synchronizace se
slouží metoda:
javax.tarnsaction.Transaction.registerSynchronization
3.2 Java Mapping of CORBA Object Transaction Service (OTS)
Transaction Manager implementuje Java mapping CORBA OTS 1.1
specifikace [2]. Transaction Manager je implementován v Java
balících:
org.omg.CosTransactions
org.omg.CosTSPortability
Transaction Manager nevyžaduje podporu vnořených transakcí.
Transaction Manager vystavuje svou OTS implementaci (rozhraní z OTS)
těm uživatelům kteří přistupují k Transaction Manageru skrz rozhraní
javax.transaction.TransactionManager definované v JTA (Java
Transaction API).
3.4 Podpora pro CORBA Aplikace
Transation Manager může volitelně podporovat následující
aplikační entity CORBy jak jsou definovány v OTS:
- Transactional Client
- Tansactional Objects
- Recoverable Objects
- Transactional Servers
- Recoverable Servers
Tyto aplikační entity dovolují Transaction Manageru použít
rozhraní definované v CosTransaction modulu jak jej specifikuje
OTS 1.1.
3.5 Interoperabilita Transaction Manageru
Transaction Manager musí podporovat distribuované transakce které
vyžadují (implikují použití) četné Resource Managery v jednoduchém
"ORB execution environment".
Jestliže implementace Transaction Manageru podporuje inter-ORB
interoperability, musí implementovat implicitní prezentaci kontextu
(obsahu) transakce, která se odpovídá struktuře
CosTransations.PropagationContext. Toto dovoluje Transaction
Manageru podporovat prezentaci kontextu inter-ORB transakce jak jej
definuje CORBA OTS 1.1. K poskytnutí interakce mezi ORBem a
Transaction Managerem, je potřeba aby Transaction Manager:
- Implementoval rozhraní Sender a Receiver modulu CosTSPortability
jako callback objekty pro ORB k informování TM kdykoliv ORB zaslal
nebo přijal žádost o transakci (transaction request).
- Vyvolával metody rozhraní TSIdentification k předání objektů
Sender a Receiver ORBu, před obsluhou první transakční žádosti.
Formát (spojového) protokolu pro přenášení kontextu transakce je
definovan v CORBA Genaral Inter-ORB Protocol specification.
3.6 ORB Identification
CORBA OTS 1.1 specifikace nedefinuje jak se ORB a Transaction
Manager identifikují navzájem. JTS definuje jednoduché rozhraní
TransactionService k usnadnění identifikace ORBu u Transaction
Manageru.
3.6.1 TransactionService Interface
JTS Transaction Manager implementuje rozhraní
javax.jts.TransactionService který umožní ORBu identifikovat se
u Transaction Manageru.
ORB vol8 metodu TransactionService.identifyORB během své
inicializace a dříve než bude obsluhovat nějaký užívatelký
požadavek.
Typicky, probíhají následující operace:
1. Aplikační server vytvoří objekt TransactionService.
2. Aplikační server přiřadí objekt TransactionService do JNDI
naming directory.
3. Aplikační server inicializuje instanci ORBu.
4. ORB, během své inicializace vytvoří objekt TSIdentification a
použije JNDI k vyhledání reference objektu TransactionService.
5. ORB Pak vyvolá metodu TransactionService.identifyORB,
dodá následující tři parametry:
- objekt ORB který identifikuje instanci ORB.
- objekt TSIdentification vytvořený (implementovaný) ORBem.
- seznamem vlastnosti pro danou (custom) konfiguraci.
6. Transaction Manager, během provádění metody identifyORB,
vyvolává TSIdentification.identify_sender a
TSIdentification.identify_receiver k příjmu callback objektů
Sender a Receiver do ORBu.
4. Reference
[1] Java Transaction API (JTA) Specificafion (http://java.sun.com/products/jta)
[2] OMG Object Transaction Service (http://www.omg.org/corba/sectrans.html#trans)
[3] ORB Portability Submission, OMG document orbos/97-04-14