Ne dub 2 16:18:08 CEST 2000, Jiří Slíva

Java Transaction Service (JTS 1.1)

  1. Úvod
  2. Funkcionalita Transaction Manageru
  3. Implementace Transaction Manageru
  4. 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

diagram1
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ů: 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.

digram

2. Funkcionalita Transaction Manageru

Transaction Manager poskytuje následující služby:

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: 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:

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:

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.
digram

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

Ne dub 2 16:18:08 CEST 2000, Jiří Slíva