Transactions Development Quick Start Guide
Erste Schritte mit dem JBoss Transaction Service
Ausgabe 5.1.0
Zusammenfassung
Kapitel 1. Erste Schritte mit JTA Link kopierenLink in die Zwischenablage kopiert!
1.1. Paket-Layout Link kopierenLink in die Zwischenablage kopiert!
Pakete, die mit dem JTA zu tun haben
- com.arjuna.ats.jts
- Enthält die JBoss Transaction Service Implementierung des JTS und JTA APIs (Application Programming Interfaces).
- com.arjuna.ats.jta
- Enthält lokalen und remote JTA-Implementierungssupport.
- com.arjuna.ats.jdbc
- Enthält transaktionalen JDBC 2.0 Support.
1.2. Einstellung der Properties Link kopierenLink in die Zwischenablage kopiert!
$JBOSS_HOME/server/default/conf/jbossts-properties.xml.
1.2.1. Festlegung des "Object Store" Speicherorts Link kopierenLink in die Zwischenablage kopiert!
Beispiel 1.1. Spezifikation des Object Store
java –Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=/location/of/objectstore myprogram
java –Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=/location/of/objectstore myprogram
defaultStoreUnterverzeichnisses des Objektspeicherroot verwahrt. Sie können das Unterverzeichnis ändern, indem Sie die com.arjuna.ats.arjuna.objectstore.localOSRoot-Propertyvariable einstellen.
1.3. Demarkierung von Transaktionen Link kopierenLink in die Zwischenablage kopiert!
- Ein Appliaktionstransaktion-Demarations-Interface auf hoher Ebene
- Ein für den Applikationsserver vorgesehenesTransaktions-Manager-Interface auf hoher Ebene
- und ein Standard Java-Mapping des X/Open XA-Protokolls, das für den transaktionalen Ressourcen-Manager vorgesehen ist
1.3.1. UserTransaction Link kopierenLink in die Zwischenablage kopiert!
UserTransaction-Interface gestattet es Applikationen, die Transaktionsgrenzen zu kontrollieren.
UserTransaction-Implementierungen via JNDI erhalten.
Beispiel 1.2. Steuerung von Transaktionen
1.3.2. TransactionManager Link kopierenLink in die Zwischenablage kopiert!
TransactionManager-Interface gestattet dem Applikationsserver die Kontrolle der Transaktionsgrenzen für die verwaltete Applikation.
TransactionManager-Implementierungen via JNDI erhalten.
// Initialize the context and get the TransactionManager
InitialContext ic = new InitialContext();
TransactinoManager utm = ic.lookup("java:/TransactionManager")
// Initialize the context and get the TransactionManager
InitialContext ic = new InitialContext();
TransactinoManager utm = ic.lookup("java:/TransactionManager")
1.3.3. Transaction Link kopierenLink in die Zwischenablage kopiert!
Transaction-Interface gestattet die Durchführung von Operationen an der mit dem Zielobjekt assoziierten Transaktion. Jede Transaktion auf oberster Ebene wird mit einem Transaction-Objekt assoziiert, wenn die Transaktion erstellt wird. Das Transaction-Objekt hat mehrere Anwendungsfälle wie in Anwendungsfälle des Transaction-Interface beschrieben.
Anwendungsfälle des Transaction-Interface
- Beteiligt die durch die Applikation verwendeten transaktionalen Ressourcen.
- Registrieren Sie sich für Transaktionssynchronisations-Callbacks
- Schreiben Sie die Transaktion fest oder setzen Sie sie zurück.
- Erhalten Sie den Status der Transaktion.
Transaction-Objekt erhalten, indem Sie die getTransaction-Methode des TransactionManager-Interface aufrufen wie in Beispiel 1.3, »Erhalt einer Transaktion« dargestellt.
Beispiel 1.3. Erhalt einer Transaktion
Transaction txObj = TransactionManager.getTransaction();
Transaction txObj = TransactionManager.getTransaction();
1.4. Lokale versus distribuierte JTA-Implementierungen Link kopierenLink in die Zwischenablage kopiert!
Prozedur 1.1. Wahl der lokalen JTA-Implementierung
- Setzen Sie die om.arjuna.ats.jta.jtaTMImplementation-Property auf
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple. - Setzen Sie die com.arjuna.ats.jta.jtaUTImplementation-Property auf
com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple.
Prozedur 1.2. Auswahl der distribuierten JTA-Implementierung
- Setzen Sie die com.arjuna.ats.jta.jtaTMImplementation-Property auf
com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple. - Setzen Sie die com.arjuna.ats.jta.jtaUTImplementation-Property auf
com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple.
1.5. JDBC und Transaktionen Link kopierenLink in die Zwischenablage kopiert!
java.sql.Driver-Interface.
java.sql.DriverManager.getConnection-Methode. Nach Verbindungsherstellung überwacht JBossJTA alle Operationen. Sie können solche Verbindungen auf dieselbe Weise verwenden wie jede andere JDBC-Treiberverbindung.
close-Methode werden alle an der Verbindung durchgeführten Operationen auf Anwendungsebene nur an dieser transaktionsspezifischen Verbindung durchgeführt.
1.6. Konfigurierbare Optionen Link kopierenLink in die Zwischenablage kopiert!
Wichtige konfigurierbare Optionen
- com.arjuna.ats.jta.supportSubtransactions
Mögliche Werte
- Ja (Standard)
- Nein
- com.arjuna.ats.jta.jtaTMImplementation
Mögliche Werte
- com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple
- com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
- com.arjuna.ats.jta.jtaUTImplementation
Mögliche Werte
- com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple
- com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
- com.arjuna.ats.jta.xaBackoffPeriod
Mögliche Werte
- Zeit in Sekunden
- com.arjuna.ats.jdbc.isolationLevel
Mögliche Werte
- Jede unterstützte JDBC-Ebene
Kapitel 2. Erste Schritte mit JTS / OTS Link kopierenLink in die Zwischenablage kopiert!
2.1. Paket-Layout Link kopierenLink in die Zwischenablage kopiert!
|
Paket
|
Beschreibung
|
|---|---|
|
com.arjuna.orbportability
|
Dieses Paket enthält die Klassen, die die ORB-Portabilitätsbibliothek und andere nützliche Dienstprogrammklassen bilden.
|
|
org.omg.CosTransactions
|
Dieses Paket enthält die Klassen, die das CosTransactions.idl-Modul bilden.
|
|
com.arjuna.ats.jts
|
Dieses Paket enthält die JBoss Transaction Service Implementierungen des JTS und JTA.
|
|
com.arjuna.ats.arjuna
|
Dieses Paket enthält weitere Klassen, die für die JBoss Transaction Service Implementierung des JTS benötigt werden.
|
|
com.arjuna.ats.jta
|
Dieses Paket enthält lokalen und remote JTA-Implementierungssupport.
|
|
com.arjuna.ats.jdbc
|
Dieses Paket enthält transaktionalen JDBC 2.0 Support.
|
2.2. Einstellung von Properties Link kopierenLink in die Zwischenablage kopiert!
jbossts-properties.xml zu liefern, was an allen genannten Speicherorten stattfinden kann, in Suchreihenfolge, in Mögliche Speicherorte der jbossts-properties.xml-Datei . properties-Datei.
Mögliche Speicherorte der jbossts-properties.xml-Datei
- Das aktuelle Arbeitsverzeichnis.
- Das Home-Verzeichnis des ausführenden Benutzers.
- Der
CLASSPATHmittels dergetResource-Methode.
2.3. Start und Stop von ORB und BOA/POA Link kopierenLink in die Zwischenablage kopiert!
initORB-Methode und entweder die initBOA oder die initPOA-Methoden der ORBInterface-Klasse verwenden, die im ORB Portability Handbuch beschrieben ist. Verwenden Sie nicht die im zugrunde liegenden ORB bereitgestellten ORB_init BOA_init oder create_POA-Methoden, da dies zum fehlerhaften Betrieb der Applikationen führen kann.
Beispiel 2.1. ORB-Initialisierung
ORBInterface-Methoden
orb- Gibt Referenzen zum ORB wieder
boa- Gibt Referenzen zum BOA wieder
poa- Gibt Referenzen zum POA wieder
rootPoa- Gibt Referenzen zum Root-POA wieder
shutdownOA- Fahren Sie das BOA herunter. Führen Sie dies vor
shutdownORBaus und ehe Sie die Applikation beenden. shutdownORB- Fahren Sie das ORB herunter. Verwenden Sie dies vor
shutdownOAund ehe Sie die Applikation beenden.
shutdownOA und shutdownORB Methoden, ehe Sie eine Applikation beenden. Dies gestattet es dem JBoss Transaction Service die notwendigen Bereinigungsvorgänge durchzuführen. Der shutdownOA Vorgang fährt entweder BOA oder POA herunter, je nach verwendetem ORB.
Beispiel 2.2. Herunterfahren des ORB
shutdown aufgerufen haben. Sie müssen BOA/POA und ORB reinitialisieren, ehe Sie weitere CORBA-Objekte verwenden.
Anmerkung
2.4. Festlegung des "Object Store"-Speicherorts Link kopierenLink in die Zwischenablage kopiert!
objectStoreDir-Property festlegen.
Beispiel 2.3. Festlegung des Object Store bei Applikationsausführung
java Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=/var/tmp/ObjectStore myprogram
java Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=/var/tmp/ObjectStore myprogram
defaultStore gespeichert. Dieses Unterverzeichnis kann jedoch durch Einstellung der com.arjuna.ats.arjuna.objectstore.localOSRoot-Property-Variable geändert werden.
2.5. Implizite Transaktionsfortpflanzung und Interposition Link kopierenLink in die Zwischenablage kopiert!
Fortpflanzung des Transaktionskontext
- Explizite Fortpflanzung
- Eine Applikation gibt Kontextobjekte als explizite Parameter weiter. Diese Objekte sind entweder Instanzen des
Control-Interface oder derPropagationContext-Struktur und sind durch den Transaktionsdienst definiert. Es ist effizienter diePropagationContext-Struktur statt dasControl-Interface zu verwenden. - Implizite Fortpflanzung
- Anfragen an Objekten werden implizit mit der Transaktion des Clients assoziiert und teilen den Transaktionskontext des Clients. Der Kontext wird implizit an die Objekte übertragen, ohne direkte Intervention des Clients.
Abbildung 2.1. Interposition
Anmerkung
CosTSPortability-Interface unterstützen. JacORB und das JDK miniORB liefern beide den erforderlichen Support.
Aktivierung der Fortpflanzung
- Implizite Kontextfortpflanzung
- Setzen Sie die com.arjuna.ats.jts.contextPropMode-Property-Variable auf
CONTEXT. - Interposition
- Setzen Sie die com.arjuna.ats.jts.contextPropMode-Property-Variable auf
INTERPOSITION.
Anmerkung
2.6. Erhalt von Current Link kopierenLink in die Zwischenablage kopiert!
Current-Pseudo-Objekt von der com.arjuna.ats.jts.OTSManager-Klasse, indem Sie dessen get_current-Methode verwenden.
2.7. Beendigung der Transaktion Link kopierenLink in die Zwischenablage kopiert!
Control Zugriff auf eine beendete Transaktion hat, ist implementierungsspezifisch. Beim JBoss Transaction Service werden alle Informationen zu einer Transaktion gelöscht wenn diese endet, wenn Sie das Current-Pseudo-Objekt verwenden.Aus diesem Grund sollten Sie keine Control-Referenzen zu der Transaktion verwenden, nachdem Sie den Festschreibungs- oder Zurücksetzungsvorgang ausgegeben haben.
Terminator-Interface beenden, so werden Informationen zu der Transaktion nur entfernt, wenn alle ausstehenden Referenzen zu ihr gelöscht wurden. Sie können signalisieren, dass die Transaktionsinformationen nicht mehr benötigt werden, indem Sie die destroyControl-Methode der OTS-Klasse benutzen, die Sie im com.arjuna.CosTransactions-Paket finden. Nachdem das Programm anzeigt, dass die Transaktionsinformationen nicht mehr benötigt werden, sollten Sie keine Control-Referenzen zur Transaktion mehr verwenden.
2.8. Transaction Factory Link kopierenLink in die Zwischenablage kopiert!
Current-Interface. Jeder transaktionale Client hat im Wesentlichen seinen eigenen Transaktionsmanager, die TransactionFactory, die sich am selben Ort damit befindet. Um dieses Verhalten zur Runtime außer Kraft zu setzen, setzen Sie die com.arjuna.ats.jts.transactionManager-Property-Variable auf YES. Um die Transaction Factory auszuführen, führen Sie das start-transaction-service-Skript aus, das sich im ATS_ROOT/bin-Verzeichnis befindet.
Current findet die Factory in der Regel mittels der CosServices.cfg-Datei im $JBOSS_HOME/etc-Verzeichnis. Diese Datei ähnelt der resolve_initial_references-Datei und wird automatisch erstellt oder aktualisiert, wenn die Transaction Factory an einer bestimmten Maschine gestartet wird. Diese Datei muss lokal an alle Maschinen kopiert werden, die sich dieselbe Transaction Factory teilen.
Anmerkung
CosServices.cfg beziehen sich auf den Standardnamen und Speicherort der Konfigurationsdatei. Um den Namen der Datei zu ändern, verwenden Sie die com.arjuna.orbportability.initialReferencesFile-Variable. Um deren Speicherort zu ändern, stellen Sie die com.arjuna.orbportability.initialReferencesRoot-Variable ein.
Beispiel 2.4. Anpassung der "Initial References"-Datei
java –Dcom.arjuna.orbportability.initialReferencesFile=ref –Dcom.arjuna.orbportability.initialReferencesRoot=c:\\temp prog
java –Dcom.arjuna.orbportability.initialReferencesFile=ref –Dcom.arjuna.orbportability.initialReferencesRoot=c:\\temp prog
ResolveService-Parameter
- CONFIGURATION_FILE
- Das System verwendet die
CosServices.cfg-Datei. Dies ist das Standardverhalten. - NAME_SERVICE
- Der JBoss Transaction Service versucht mit einem Nameservice die Transaction Factory zu finden. Wird dies nicht unterstützt, so wird eine Ausnahme gemeldet.
- BIND_CONNECT
- Der JBoss Transaction Service verwendet den ORB-spezifischen Bindemechanismus. Wird dies nicht unterstützt, so wird eine Ausnahme gemeldet.
2.9. Recovery Manager Link kopierenLink in die Zwischenablage kopiert!
start-recovery-manager-Skript in $ATS_ROOT/bin aus.
Kapitel 3. Erste Schritte mit Web Services Transactions und XTS Link kopierenLink in die Zwischenablage kopiert!
3.1. Konfiguration der Web Services Komponente Link kopierenLink in die Zwischenablage kopiert!
|
Property
|
Mögliche Werte
|
|---|---|
|
com.arjuna.orbportability.initialReferencesFile
|
CosServices.cfg
|
|
com.arjuna.orbportability.initialReferencesRoot
|
Das Verzeichnis, das die Datei arjuna.properties enthält.
|
|
ArjunaJTS_LicenceKey
|
Systemspezifische Lizenz.
|
|
com.arjuna.orbportability.resolveService
|
CONFIGURATION_FILE
NAME_SERVICE
BIND_CONNECT
|
|
com.arjuna.ats.arjuna.objectstore.objectStoreDir
|
Jeder Speicherort in den die Anwendung schreiben kann.
|
|
com.arjuna.ats.arjuna.objectstore.localOSRoot
|
defaultStore
|
|
PROPERTIES_FILE
|
arjuna.properties
|
|
com.arjuna.ats.arjuna.coordinator.asyncPrepare
|
YES/NO
|
|
com.arjuna.ats.arjuna.coordinator.asyncCommit
|
YES/NO
|
|
com.arjuna.ats.arjuna.coordinator.commitOnePhase
|
YES/NO
|
|
com.arjuna.ats.arjuna.coordinator.transactionSync
|
ON/OFF
|
|
com.arjuna.ats.arjuna.coordinator.enableStatistics
|
ON/OFF
|
|
com.arjuna.ats.jts.alwaysPropagateContext
|
YES/NO
|
|
com.arjuna.ats.jts.defaultTimeout
|
No timeout
|
|
com.arjuna.ats.jts.supportRollbackSync
|
YES/NO
|
|
com.arjuna.ats.jts.supportInterposedSynchronization
|
YES/NO
|
|
com.arjuna.ats.jts.supportSubtransactions
|
YES/NO
|
|
com.arjuna.ats.jts.checkedTransactions
|
YES/NO
|
|
com.arjuna.ats.jts.transactionManager
|
YES/NO
|
|
com.arjuna.ats.jts.needTranContext
|
YES/NO
|
|
com.arjuna.ats.arjuna.coordinator.txReaperTimeout
|
120000000 Mikrosekunden
|
|
com.arjuna.ats.arjuna.coordinator.txReaperMode
|
NORMAL
DYNAMIC
|
|
com.arjuna.ats.jts.contextPropMode
|
NONE
CONTEXT
INTERPOSITION
|
Anhang A. Änderungsverzeichnis Link kopierenLink in die Zwischenablage kopiert!
| Versionsgeschichte | |||
|---|---|---|---|
| Version 5.1.0-2.400 | 2013-10-31 | ||
| |||
| Version 5.1.0-2 | 2012-07-18 | ||
| |||
| Version 5.1.0-100 | Mon Jul 18 2011 | ||
| |||