トランザクション開始後のメソッドコール時の例外への対応

事象説明

    Java アプリケーションでトランザクションを開始した後、C++のサーバアプリケーションのメソッドコールを 行った際に失敗する場合があります。

状況の確認方法

    アプリケーション動作時にログファイルに以下のようなログが出力されます。

    org.omg.CORBA.INV_OBJREF: NIL object invocation vmcid: 0x0 minor code: 1082 completed: Maybe
    at jp.co.nec.orb.SystemExceptionPackage.INV_OBJREFInfo.newException(SystemExceptionList.java:250)
    at jp.co.nec.orb.SystemExceptionPackage.SystemExceptionList.create(SystemExceptionList.java:108)
    at jp.co.nec.orb.DelegateImpl.readReply(DelegateImpl.java:1984)
    at jp.co.nec.orb.DelegateImpl.invoke(DelegateImpl.java:1171)
    at jp.co.nec.orb.DelegateImpl.invoke(DelegateImpl.java:1065)

復旧方法

    Java アプリケーション内でトランザクションを実行する際の性能向上を行っています。 これにより、Java アプリケーション内でトランザクションを開始して、C++アプリケーションや WebOTX R6.2 以前のJava アプリケーションを呼び出す場合にエラーとなる場合があります。
    この場合、呼び出し元のJava アプリケーションに以下のプロパティを設定して起動してください。

    プロパティ名
    NOPropagationOptimizetrue


    呼び出し元のJava アプリケーションがドメイン内で動作している場合には、 ${INSTANCE_ROOT}/config/TS/jta.conf に以下を追加したあとドメイン再起動することでも 対処可能です。

    NOPropagationOptimize = true


関連情報