7.13.2.2 非XAリソースを使用するNode.jsアプリケーションの構成

非XAリソース(MongoDBなど)を使用する場合は、この項に記載されている情報を使用してNode.jsトランザクション参加側アプリケーションを構成します。

  1. Node.jsのMicroTxライブラリをpackage.jsonファイルに依存関係として追加します。
    "dependencies": {
        "@oracle/microtx": "<version>"
      }

    ここで、<version>は、Node.jsのMicroTxライブラリの最新バージョンです。

  2. MicroTxライブラリのプロパティ値を構成します。「JAX-RSおよびNode.jsアプリケーションのライブラリ・プロパティの構成」を参照してください。Node.jsアプリケーションのロギングを有効にするには、追加のプロパティを設定する必要があります。「MicroTx Node.jsライブラリのログの有効化」を参照してください。
    oracle.tmm.xa.XaSupportの値がfalseoracle.tmm.xa.LLRSupportの値がtrueに設定されていることを確認します。
    oracle.tmm.xa.XaSupport = false
    oracle.tmm.xa.LLRSupport = true
  3. プロパティ値を定義したtmm.propertiesファイルを渡して、マイクロサービスのMicroTxライブラリ・プロパティを構成します。
    TrmConfig.init('./tmm.properties');
  4. MicroTxライブラリをインポートします。
    import {Request, Response, Router} from 'express';
    import {XATransactionMethod, XAConfig, TrmConfig, NonXAResource, TrmNonXAResource} from "../trmlib/xa";
  5. ルーター・オブジェクトを作成します。
    たとえば、次のコードでは、bankSvcRouterという名前のルーター・オブジェクトが作成されます。一意のルーター名を指定します。
    const bankSvcRouter = Router();
  6. NonXAResourceインタフェースを実装します。

    たとえば、次のコード・サンプルでは、MongoDbNonXAResourceクラスによってNonXAResourceインタフェースが実装されます。

    public class MongoDbNonXAResource implements NonXAResource {
    // Provide application-specific code for all the methods in the NonXAResource interface.
    }
  7. NonXAResourceインタフェースを実装するクラスを、XA操作を処理するためのMicroTxライブラリに登録します。

    次の例では、NonXAResourceインタフェースを実装するMongoDbNonXAResourceクラスをMicroTxライブラリに登録する方法について説明します。

    const nonxaResource: NonXAResource = new MongoNonXAResource();
  8. TrmNonXAResource.init()関数を使用して、MicroTxライブラリが使用するNonXAResourceオブジェクトを指定します。
    TrmNonXAResource.init(nonxaResource)
  9. 変更内容を保存します。