1 Reply Latest reply: Jul 31, 2012 8:55 PM by asahide RSS

    UnixC と Javaの双方でトランザクション処理を共有する方法について

    952920
      こんにちは!

      過去の資産の関係上、UnixCとJavaの双方でトランザクション処理を共有したいのですが、
      コネクションを共有する方法があれば教えてください。

      DB : Oracle 10 or 11
      OS : RHEL 4 or 5
      C compiler : gcc
      Java compiler : JDK 6
      ブリッジ:JNI,JNA,CNIなど 未定

      ex)処理イメージ
      ①Javaメインを起動
      ②Java側でDB コネクションを取得
      ③Java側でInsert処理
      ④Jata to C ブリッジ接続
      ⑤C側で更新処理
      ⑥Java側でコミット or ロールバック
      ⑦コネクション切断(返却)

      ※C Javaで別々のコネクションを取得すると可能可能ですが、トランザクションが分かれてしまいます。

      C Java の双方でOCIを使用すると可能かも知れませんが、いかがでしょうか?

      よろしくお願いします。
        • 1. Re: UnixC と Javaの双方でトランザクション処理を共有する方法について
          asahide
          一つのグローバルトランザクション内で複数のトランザクションブランチを実行させたいという内容だと理解してます。


          詳しい実装方法は良く分かってませんが、OCIを使えばできるのではと考えてます。
          <<http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/appdev.111/E05677-02/oci08sca.htm#i450228>>

          ただ、JavaとCなので両方をマネージして同一のグローバルトランザクションだよ、と指定してあげる必要はあるので、なんらかの開発は必要になると思います。


          ちなみに11gからはRAC環境でもロック共有ができるようになってます。
          <<http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/appdev.111/E05687-02/adfns_xa.htm#BGBEECIE>>