|   /* 初期化処理  */   javax.transaction.UserTransaction ut = null;   javax.naming.Context ic = null;   // InitialContextの生成   try{    ic = new InitialContext();・・・(1)   } catch( NamingException e ) {    System.out.println( "error: new InitialContext()" );     System.exit(1);   }   // UserTransactionの獲得   try {    ut = (UserTransaction)ic.lookup("java:comp/UserTransaction");・・・(2)  } catch( NamingException e ) {    System.err.println( "error: lookup UserTransaction" );     System.exit(1);   }   try {    ut.begin();・・・(3)   } 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 {    //ビジネスロジックを記述します。・・・(4)   } catch(Throwable e) {    // ここでは例として処理が失敗した場合にフラグをfalseに設定しています。     commitRequest = false;   }      if(commitRequest) {・・・(5)    try {      ut.commit();・・・(6)     } 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();・・・(6)     } 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.");    }   }  |