TransactionServiceの初期化

これは、JavaアプリケーションでTransactionServiceを初期化するさまざまな方法を示す簡単なサンプルです。異なる初期化方法を示す4種類の異なる例があります。
InitOrb         // ORB default TransactionService configuration
InitUser        // User instantiated TransactionService configuration
InitClientOrb   // Pure Client ORB default TransactionService configuration
InitClientUser  // Pure Client User instantiated TransactionService configuration

1 コンパイルおよび実行

付属のANTスクリプトを使用してサンプルプログラムをコンパイルおよび実行します。コンパイルするには、次を実行します。
ant
最初の2つのテストを実行するには、次を実行します。
ant run.orb

ant run.user

純粋なクライアントテストケースを実行するには、サーバプロセスを開始し、クライアントテストを実行します。サーバを開始するには、次を実行します。
ant run.user
クライアントテストを実行するには、次を実行します。
ant run.client.user

2 InitOrbの実装

Novell exteNd Messaging PlatformのJTSをORBのデフォルトトランザクションサービスに設定するには、一番上のlibディレクトリまたはjre/lib/ext/classesディレクトリにある、transactions.propertiesファイルを次のように変更する必要があります。
#
# JBroker Transaction Service Properties
#
                                                                           
# the class name of the transaction service
transaction.service.class=com.sssw.jts.api.TransactionService
次の例は、Novell exteNd Messaging PlatformのJTSがデフォルトサービスとして設定されたときにTrasactionServiceへの初期参照を検索する方法、またその回復メソッドを呼び出し、JTSおよびJTAトランザクションマネージャのインタフェースを解決してトランザクションを開始する方法を示します。
package init;
                                                                           
import javax.transaction.TransactionManager;
                                                                           
import org.omg.CORBA.ORB;
                                                                           
import org.omg.CosTransactions.Current;
import org.omg.CosTransactions.TransactionFactory;
                                                                           
import com.sssw.jts.api.TransactionService;
                                                                           
/**
   Initialization as default TransactionService
 */
                                                                           
public class InitOrb
{
    public static void main(String args[]) throws Exception
    {
    |   System.setProperty("transaction.service.id", "EXAMPLES/INIT");
    |                                                                      
    |   System.out.println("+ Initialize ORB");
    |   ORB orb = ORB.init(args, null);
    |                                                                      
    |   System.out.println("+ Find TransactionService");
    |   TransactionService ts = (TransactionService)
    |       orb.resolve_initial_references("TransactionService");
    |                                                                      
    |   System.out.println("+ Get TransactionManager");
    |   TransactionManager tm = ts.getTransactionManager();
    |                                                                      
    |   System.out.println("+ Get Current");
    |   Current tc = (Current)
    |       orb.resolve_initial_references("TransactionCurrent");
    |                                                                      
    |   System.out.println("+ Get TransactionFactory");
    |   TransactionFactory tf = (TransactionFactory)
    |       orb.resolve_initial_references("TransactionFactory");
    |                                                                      
    |   System.out.println("+ Test Ok");
    }
}

3 InitUserの実装

ORBのデフォルトトランザクションサービスであるNovell exteNd Messaging PlatformのJTSを削除するには、一番上のlibディレクトリまたはjre/lib/ext/classesディレクトリにあるtransactions.properties ファイルを次のように変更する必要があります。
#
# JBroker Transaction Service Properties
#
                                                                           
# the class name of the transaction service
transaction.service.class=
次の例は、TransactionServiceオブジェクトをインスタンス化し、ORBへのトランザクションサービスとして設定し、回復メソッドを呼び出し、JTSおよびJTAトランザクションマネージャインタフェースを解決してトランザクションを開始する方法を示します。
package init;
                                                                           
import java.util.Properties;
                                                                           
import javax.transaction.TransactionManager;
                                                                           
import org.omg.CORBA.ORB;
                                                                           
import org.omg.CosTransactions.Current;
import org.omg.CosTransactions.Control;
import org.omg.CosTransactions.TransactionFactory;
                                                                           
import com.sssw.jbroker.api.transaction.TSIdentification;
                                                                           
import com.sssw.jts.api.TransactionService;
                                                                           
public class InitUser
{
    public static void main(String args[]) throws Exception
    {
    |   System.setProperty("transaction.service.id", "EXAMPLES/INIT");
    |                                                                      
    |   //
    |   // [1] Create a TransactionService with some properties
    |   //
    |   // NOTE:SKIP THIS STEP IF USING DEFAULT TRANSACTIONSERVICE
    |   // SET IN THE transactions.properties FILE.
    |   //
    |   System.out.println("+ Create TransactionService ... ");
    |   Properties props = new Properties();
    |   props.setProperty(TransactionService.PROPERTY_LOG_DIRECTORY, "../../logs");
    |   props.setProperty(TransactionService.PROPERTY_LOG_FILEPREALLOC, "false");
    |   TransactionService jts = new TransactionService(props);
    |                                                                      
    |   //
    |   // [2] Initialize the ORB
    |   //
    |   System.setProperty("ORBPort", "5555");
    |   ORB orb = ORB.init(args, null);
    |                                                                      
    |   //
    |   // [3] Register the TransactionService
    |   //
    |   // NOTE:SKIP THIS STEP IF USING DEFAULT TRANSACTIONSERVICE
    |   // SET IN THE tranactions.properties FILE.
    |   //
    |   System.out.println("+ Register TransactionService ... ");
    |   TSIdentification tsIdent = (TSIdentification)
    |       orb.resolve_initial_references("TSIdentification");
    |   tsIdent.identifyTransactionService(jts);
    |                                                                      
    |   //
    |   // [4] Recover TM auto-recovery and synchronously
    |   // before creating transactions...
    |   //
    |   System.out.println("+ Recover TransactionService ... ");
    |   TransactionService ts = (TransactionService)
    |       orb.resolve_initial_references("TransactionService");
    |                                                                      
    |   ts.recover(null, false, null);
    |                                                                      
    |   if (args.length > 0) {
    |   |   System.out.println("+ ORB on Port 5555 Running ...");
    |   |   orb.run();
    |   |   System.out.println("+ ORB on Port 5555 Done ...");
    |   |   System.exit(0);
    |   }
    |                                                                      
    |   //
    |   // [5] Transaction Management
    |   //
    |   System.out.println("+ Create Transaction with Current object ... ");
    |   Current txCurrent = (Current)
    |       orb.resolve_initial_references("TransactionCurrent");
    |   txCurrent.begin();
    |   txCurrent.rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with TransactionFactory object ... ");
    |   TransactionFactory txFactory = (TransactionFactory)
    |       orb.resolve_initial_references("TransactionFactory");
    |                                                                      
    |   Control tx = txFactory.create(60);
    |   tx.get_terminator().rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with TransactionManager object ... ");
    |   TransactionManager tm = ts.getTransactionManager();
    |   tm.begin();
    |   tm.rollback();
    }
}

4 InitClientOrbの実装

Novell exteNd Messaging PlatformのJTSを純粋なクライアントORBのデフォルトトランザクションサービスに設定するには、一番上のlibディレクトリまたはjre/lib/ext/classes ディレクトリにある、transactions.propertiesファイルを次のように変更する必要があります。
#
# JBroker Transaction Service Properties
#
                                                                           
# the class name of the transaction service
transaction.service.class=com.sssw.jts.client.TransactionService
transaction.service.remote.addresses=iiop:gooners:5555
次の例は、Novell exteNd Messaging Platformの JTSが純粋なクライアントORBのデフォルトサービスとして設定されているときに、TransactionServiceへの初期参照を検索する方法を示します。 純粋なクライアント環境では、サーバ上でアクティブなトランザクションマネージャが作動している必要があります。
package init;
                                                                           
import java.util.Properties;
                                                                           
import javax.transaction.UserTransaction;
                                                                           
import org.omg.CORBA.ORB;
                                                                           
import org.omg.CosTransactions.Current;
import org.omg.CosTransactions.Control;
import org.omg.CosTransactions.TransactionFactory;
                                                                           
import com.sssw.jbroker.api.transaction.TSIdentification;
                                                                           
import com.sssw.jts.client.TransactionService;
                                                                           
public class InitClientOrb
{
    public static void main(String args[]) throws Exception
    {
    |   //
    |   // [1] Initialize the ORB
    |   //
    |   ORB orb = ORB.init(args, null);
    |                                                                      
    |   //
    |   // [2] Find TransactionFactory, Current ...
    |   //
    |   System.out.println("+ Create Transaction with Current object ... ");
    |   Current txCurrent = (Current)
    |       orb.resolve_initial_references("TransactionCurrent");
    |   txCurrent.begin();
    |   txCurrent.rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with TransactionFactory object ... ");
    |   TransactionFactory txFactory = (TransactionFactory)
    |       orb.resolve_initial_references("TransactionFactory");
    |                                                                      
    |   Control tx = txFactory.create(60);
    |   tx.get_terminator().rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with UserTransaction object ... ");
    |   UserTransaction userTrans = (UserTransaction)
    |       orb.resolve_initial_references("UserTransaction");
    |                                                                      
    |   userTrans.begin();
    |   userTrans.rollback();
    }
}

5 InitClientUserの実装

純粋なクライアントORBのデフォルトトランザクションサービスであるNovell exteNd Messaging PlatformのJTSを削除するには、一番上のlibディレクトリまたはjre/lib/ext/classesディレクトリにある、transactions.propertiesファイルを次のように変更する必要があります。
#
# JBroker Transaction Service Properties
#
                                                                           
# the class name of the transaction service
transaction.service.class=
次の例は、TransactionServiceオブジェクトをインスタンス化し、純粋なクライアントORBへのトランザクションサービスとして設定し、JTSおよびJTAトランザクションマネージャインタフェースを解決してトランザクションを開始する方法を示します。
package init;
                                                                           
import java.util.Properties;
                                                                           
import javax.transaction.UserTransaction;
                                                                           
import org.omg.CORBA.ORB;
                                                                           
import org.omg.CosTransactions.Current;
import org.omg.CosTransactions.Control;
import org.omg.CosTransactions.TransactionFactory;
                                                                           
import com.sssw.jbroker.api.transaction.TSIdentification;
                                                                           
import com.sssw.jts.client.TransactionService;
                                                                           
public class InitClientUser
{
    public static void main(String args[]) throws Exception
    {
    |   //
    |   // [1] Create a TransactionService with some properties
    |   //
    |   // NOTE:SKIP THIS STEP IF USING DEFAULT TRANSACTIONSERVICE
    |   // SET IN THE transactions.properties FILE.
    |   //
    |   System.out.println("+ Create TransactionService ... ");
    |   Properties props = new Properties();
    |   props.setProperty("transaction.service.remote.addresses", "iiop:localhost:2506");
    |   TransactionService jts = new TransactionService(props);
    |                                                                      
    |   //
    |   // [2] Initialize the ORB
    |   //
    |   ORB orb = ORB.init(args, null);
    |                                                                      
    |   //
    |   // [3] Register the TransactionService
    |   //
    |   System.out.println("+ Register TransactionService ... ");
    |   TSIdentification tsIdent = (TSIdentification)
    |       orb.resolve_initial_references("TSIdentification");
    |   tsIdent.identifyTransactionService(jts);
    |                                                                      
    |   //
    |   // [4] Transaction Management
    |   //
    |   System.out.println("+ Create Transaction with Current object ... ");
    |   Current txCurrent = (Current)
    |       orb.resolve_initial_references("TransactionCurrent");
    |   txCurrent.begin();
    |   txCurrent.rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with TransactionFactory object ... ");
    |   TransactionFactory txFactory = (TransactionFactory)
    |       orb.resolve_initial_references("TransactionFactory");
    |                                                                      
    |   Control tx = txFactory.create(60);
    |   tx.get_terminator().rollback();
    |                                                                      
    |   System.out.println("+ Create Transaction with UserTransaction object ... ");
    |   UserTransaction userTrans = (UserTransaction)
    |       orb.resolve_initial_references("UserTransaction");
    |                                                                      
    |   userTrans.begin();
    |   userTrans.rollback();
    }
}
Copyright © 2000-2003, Novell, Inc.All rights reserved.