These transaction isolation levels are supported:
Serializable (default)
Read Committed - Snapshot
The transaction isolation level can only be set before a transaction is started. The isolation level is in effect until a transaction commits or rolls-back. Example 4.5, “Transaction isolation level” demonstrates starting a serializable and a read committed - snapshot transaction.
Example 4.5. Transaction isolation level
// $Revision: 1.1.2.1 $
package com.kabira.snippets.transactions;
import com.kabira.platform.Transaction;
import com.kabira.platform.Transaction.Rollback;
/**
* Transaction isolation level
* <p>
* <h2> Target Nodes</h2>
* <ul>
* <li> <b>domainnode</b> = A
* </ul>
*/
public class IsolationLevel
{
/**
* Main entry point
* @param args Not used
*/
public static void main(String [] args)
{
Transaction.Properties properties = new Transaction.Properties();
//
// Run a serializable transaction
//
properties.setTransactionName("Serializable");
properties.setIsolationLevel(
Transaction.IsolationLevel.SERIALIZABLE);
new Transaction()
{
@Override
protected void run() throws Rollback
{
System.out.println(
getActiveTransactionProperties().getTransactionName()
+ " using isolation level "
+ getActiveTransactionProperties().getIsolationLevel());
}
}.execute(properties);
//
// Run a read committed snapshot transaction
//
properties.setTransactionName("Read Committed - Snapshot");
properties.setIsolationLevel(
Transaction.IsolationLevel.READ_COMMITTED_SNAPSHOT);
new Transaction()
{
@Override
protected void run() throws Rollback
{
System.out.println(
getActiveTransactionProperties().getTransactionName()
+ " using isolation level "
+ getActiveTransactionProperties().getIsolationLevel());
}
}.execute(properties);
}
}
When this snippet is run it outputs:
[A] Serializable using isolation level SERIALIZABLE [A] Read Committed - Snapshot using isolation level READ_COMMITTED_SNAPSHOT