12. Object Broker JavaTM

WebOTX Object Broker JavaTMに関する注意事項/制限事項について説明します。

12.1. 注意事項(Java)

12.1.1. 互換性に関する注意事項

  1. WebOTX Ver6.1 (Object Broker Java Ver8.1) において Java リモート呼び出し (EJB、JNDI など) のタイムアウト時間の既定値を次のように変更しました。

    サーバでの処理に 30 秒以上かかる場合、タイムアウト時間が設定されていなければ、30 秒を経過した時点で例外 (CORBA の場合 NO_RESPONSE 例外) が発生します。必要に応じて、タイムアウト時間の設定を変更してください。 設定方法は、 [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker ] を参照してください。

  2. WebOTX Ver6.1 (Object Broker Java Ver8.1) において、Object Broker Java の AddWstringWidthOctet プロパティの既定値を true から false に変更しました。そのため、システム内で WebOTX Ver5.3 (もしくはそれ以前のバージョン) と バージョン6以降が混在する場合に通信に失敗する場合があります。その場合には、AddWstringWidthOctet プロパティの値が同じになるように設定してください。


  3. WebOTX Ver6.1 (Object Broker Java Ver8.1) において、以下のプロパティの既定値を変更しました。

    変更内容については、 [ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.10. Object Broker > 1.10.2. Object Broker JavaにおけるORBのプロパティ定義 ] を参照してください。

  4. WebOTX Ver6.2 (Object Broker Java Ver8.2) において、通信プロトコルの改良を行いました。そのため、システム内で WebOTX Ver6.1 と Ver6.2 が混在する場合に通信に失敗する場合があります。その場合には Ver6.2 側の VersionCompatible プロパティに 810 を指定してください。


  5. WebOTX Ver6.21 (Object Broker Java Ver8.21) において、SoKeepAlive プロパティの既定値を false から true に変更しました。デフォルトで SO_KEEPALIVE ソケットオプションが有効になります。


  6. WebOTX V8.3 (Object Broker Java V10.3) において、RMI-IIOPの通信で、Value(Javaクラスのインスタンス) のマーシャル・アンマーシャル時に使用する内部クラスをキャッシュするようにデフォルトの動作を変更しました。 ただし、コードベースによるダウンロード機能を利用する場合や、アプリケーション間で配備対象のクラス(スタブや 送受信対象のクラス)に重複がある場合、java.lang.ClassCastException等の障害が発生する可能性があります。 障害が発生する場合は、キャッシュを行わないように次の設定を見直してください(デフォルト値はtrueです)。
    また、コードベースによるダウンロード機能を利用する場合やアプリケーション間で配備対象のクラスに重複 がある場合、同様にjava.lang.ClassCastException等の障害が発生する可能性があります。障害が発生する 場合には、キャッシュを行わないように次の設定を見直してください(デフォルト値はfalseです)。


  7. WebOTX V8.3 (Object Broker Java V10.3) において、ドメイン起動時に、デフォルトでOadJの自動起動を 行わないように変更しました。スタンドアロンで動作するJavaのCORBAサーバを運用する場合には、自動起動を 行うように設定変更を行ってください。

    otxadmin> set server.objectbrokerservice.oadj.Startup=true

12.1.2. その他の注意事項

  1. Windows版ではサーバプロセスを終了させるメソッド呼び出しでエラーが 返ることがあります。このときサーバプロセスは正しく終了しています。 なお、サーバメソッド内でjava.lang.System.exitメソッド等により終了すると、 どのOSでも必ずエラーが返ります。exitで直接終了するとORBに制御が移らない ことから、応答メッセージを送れないためです。
     
  2. long double型は「IDL to Java Language Mapping:ptc/00-02-07」で 規定されていないので実装されていません。
     
  3. 名前サービスにおいて、kindに"_RR"を含む名前を登録してはいけません。 ラウンドロビン機能が使用します。
     
  4. インプリメンテーション名に"CacheNameService"を使用してはいけません。 WebOTX Object Brokerが使用します。
     
  5. Object Broker JavaTM は JNI を使用しています。Object Broker JavaTM は次の JNI ライブラリをロードします。
    Windows
    C:\Program Files\NEC\WebOTX\ObjectBroker\bin\ospijni.dll
    Windows(x64またはItanium)
    C:\Program Files\NEC\WebOTX\ObjectBroker\bin\ospijni64.dll
    HP-UX (PA-RISC)
    /opt/ObjectSpinner/lib/libospijni.sl
    その他の UNIX
    /opt/ObjectSpinner/lib/libospijni.so

    Object Broker JavaTM の実装クラス群を -Xbootclasspath オプションに指定して java コマンドを実行した場合、以下のいずれかの設定が必要です。

    1. sun.boot.library.path システムプロパティに、JNI ライブラリが格納されているディレクトリを追加する
      (sun.boot.library.path システムプロパティには、その JavaVM が必要とする JNI ライブラリのディレクトリをすべて指定する必要があります)
    2. JavaVM が必要とする JNI ライブラリを以下のディレクトリにコピーする (UNIX の場合はシンボリックリンクでも可)
      Windows
      <JDK>\jre\bin (JRE の場合は <JRE>\<VERSION>\bin)
      UNIX
      <JDK>/jre/lib/<HW> (JRE の場合は <JRE>/lib/<HW>)

      ※<JDK>は使用するJDKのインストールディレクトリ、<JRE>は使用するJREのインストールディレクトリ、<VERSION>は使用するJREのバージョンを表します。<HW>はハードウェアによってディレクトリ名が異なります。

  6. IDL valuetypeに対する、ローカルスタブ、および値をローカルに渡すときの コピーセマンティクスについては、コピー時の性能を考慮してデフォルトでは 対応していません。ローカルコピーが必要な場合は、IDLコンパイラの-lcopy オプションを指定してください。 -lcopyオプションが指定されると、IDLコンパイラでは以下の型のオペレーション のinおよびinout引数に関して、ローカルコピーセマンティクスを展開します。
      valuetype型
      valuetype型のtypedef、sequence、array
      valuetype型をメンバに含むstructおよびunion型
    また、any型については実際の型が不確定であるため、valuetype型の使用の 有無に関わらず一律ローカルコピーの対象になります。
      any型
      any型のtypedef、sequence、array
      any型をメンバに含むstructおよびunion型
    any型に関するローカルコピーが不要の場合は、anyをローカルコピーの対象外 とする-noanycopyオプションが用意されています。
     
  7. CSIv2 機能を使用する場合は原則として SSL を同時に使用することが必要です。SSL を使用せずに CSIv2 機能を使用するには、UseCSI プロパティに nossl と指定してください。この場合、セキュリティ関連のデータが暗号化されずに通信されます。


  8. システムの負荷が高い場合などに、OadJの起動に30秒以上かかった場合、アライブチェックモニタで以下のようなエラーが検出されることがあります。
    ERROR com.nec.webotx.enterprise.system.notification - OTX01200012:is not alive :(ドメイン名):category=monitor,type=alive-check-monitor,J2EEServer=server,name=WebOTXObjectBrokerOadJService-state
    統合運用管理ツール画面の「(ドメイン名)」-「アプリケーションサーバ」-「ObjectBrokerサービス」-「oadj」の「状態」タブで「監視間隔」属性を 60000(ミリ秒)程度に長くすることで、回避可能です。

12.2. 制限事項(Java)

12.2.1. RMI-IIOP のダイナミック・プロキシによる通信モード使用時の制限事項

  1. RMI-IIOP のダイナミック・プロキシによる通信モードを使用する場合は、javax.rmi.PortableRemoteObject.narrow()の戻り値で取得したオブジェクトを、さらにnarrowの引数に渡してオブジェクトの取得を行うことはできません。

12.2.2. その他の制限事項

  1. org.omg.DynamicAny.DynValueと、org.omg.DynamicAny.DynAnyの以下の オペレーションは実装していません。
      org.omg.DynamicAny.DynAny.insert_valuetype
      org.omg.DynamicAny.DynAny.get_valuetype
     
  2. パラメータレベルのフックは使用できません。 これは、IDLコンパイラ(i2j)が既定値で出力するスタブ/スケルトンを 性能に有利なStream-based形式で出力するためです。もし、パラメータ レベルのフックが必要な場合には、IDLコンパイラの-notstreamオプション を使用して、旧形式(DII/DSI-based)のスタブ/スケルトンを出力して ください。
     
  3. SINGLE_THREAD_MODEL(POAポリシー)の実装オブジェクトを、 PerClientThread(サーバ処理スレッドポリシー)で動作させる場合、 GIOP1.2のフラグメントメッセージを正常に受信できない場合があります。
     
  4. JDK 1.4でCORBAの実装が変更された結果、JDKとObject Broker JavaTMのCORBAの実装で、一部、不整合が生じています。その影響で、ServantLocatorを使用する特殊なアプリケーション(例:Object Broker JavaTMサンプルのPOA3、POA4、POA6、POA7、POA8、POA9、POA14 のようなアプリケーション)では、バージョン1.4以降のJDKで動作する場合に、Xbootclasspathオプションを指定してObject Broker JavaTMのライブラリを優先させる必要があります。
    Object Broker JavaTMでは、インタフェースの互換を保つため、org.omg.PortableServer.Servant関連クラスの修正を行っていません。
     
  5. JDK5.0を使用して、CORBAアプリケーションのコンパイルを行った場合、以下のような注意文が表示されます。
     注: Sample.java の操作は、未チェックまたは安全ではありません。
     注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。