// UserTransactionの獲得
try {
ut = (UserTransaction)ic.lookup("java:comp/UserTransaction");
} catch( NamingException e ) {
System.err.println( "error: lookup UserTransaction" );
System.exit(1);
}
try {
ut.begin();
} catch (NotSupportedException e) {
System.err.println("The thread is already associated with a transaction ");
System.exit(1);
} catch(SystemException e) {
System.err.println("The system error has been encountered");
System.exit(1);
}
try {
//ビジネスロジックを記述します。
} catch(Throwable e) {
// ここでは例として処理が失敗した場合にフラグをfalseに設定しています。
commitRequest = false;
}
if(commitRequest) {
try {
ut.commit();
} catch(RollbackException e) {
System.err.println("The transaction has been rolled back rather than committed");
} catch(SystemException e) {
System.err.println("The system error has been encountered.");
}
} else {
try {
ut.rollback();
} catch(java.lang.IllegalStateException e) {
System.err.println("The current thread is not associated with a transaction.");
} catch(SystemException e) {
System.err.println("The system error has been encountered.");
}
} |