12. Object Broker JavaTM/C++
WebOTX Object Broker
JavaTM/C++に関する注意事項/制限事項について説明します。
- WebOTX Object Broker JavaTM
- WebOTX Object Broker C++
12.1. 注意事項(Java)
12.1.1. リモート呼び出しのタイムアウト時間の既定値変更
WebOTX Ver6.1 (Object Broker Java Ver8.1) において Java リモート呼び出し
(EJB、JNDI など) のタイムアウト時間の既定値を次のように変更しました。
- 変更前:無制限 (タイムアウトしない)
- 変更後:30 秒
サーバでの処理に 30 秒以上かかる場合、タイムアウト時間が設定されていなければ、30 秒を経過した時点で例外 (CORBA
の場合 NO_RESPONSE 例外)
が発生します。必要に応じて、タイムアウト時間の設定を変更してください。
設定方法は、
[ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker ] を参照してください。
12.1.2. AddWstringWidthOctet プロパティの既定値変更
WebOTX Ver6.1 (Object Broker Java Ver8.1) において、Object Broker
Java の AddWstringWidthOctet プロパティの既定値を true から false
に変更しました。そのため、システム内で WebOTX Ver5.3 (もしくはそれ以前のバージョン) と
バージョン6以降が混在する場合に通信に失敗する場合があります。その場合には、AddWstringWidthOctet
プロパティの値が同じになるように設定してください。
12.1.3. SoKeepAlive プロパティの既定値変更
WebOTX Ver6.21 (Object Broker Java Ver8.21) において、SoKeepAlive
プロパティの既定値を false から true に変更しました。デフォルトで SO_KEEPALIVE
ソケットオプションが有効になります。
12.1.4. その他のプロパティの既定値変更
WebOTX Ver6.1 (Object Broker Java Ver8.1)
において、以下のプロパティの既定値を変更しました。
- ConnectionRoundRobinTimeout
- LogLevel
- SSLProvider
- UseConnectionRoundRobin
変更内容については、
[ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.10. Object Broker > 1.10.2. Object Broker JavaにおけるORBのプロパティ定義 ]
を参照してください。
12.1.5. ライブラリの互換バージョンについて
WebOTX Ver6.2 (Object Broker Java Ver8.2)
において、通信プロトコルの改良を行いました。そのため、システム内で WebOTX Ver6.1 と Ver6.2
が混在する場合に通信に失敗する場合があります。その場合には Ver6.2 側の VersionCompatible プロパティに
810 を指定してください。
12.1.6. Valueのマーシャル・アンマーシャル時における内部クラスのキャッシュについて
WebOTX V8.3 (Object Broker Java V10.3) において、RMI-IIOPの通信で、Value(Javaクラスのインスタンス)
のマーシャル・アンマーシャル時に使用する内部クラスをキャッシュするようにデフォルトの動作を変更しました。
ただし、コードベースによるダウンロード機能を利用する場合や、アプリケーション間で配備対象のクラス(スタブや
送受信対象のクラス)に重複がある場合、java.lang.ClassCastException等の障害が発生する可能性があります。
障害が発生する場合は、キャッシュを行わないように次の設定を見直してください(デフォルト値はtrueです)。
- jp.co.nec.orb.PoolMarshalClasses
- jp.co.nec.orb.PoolMarshalFields
また、コードベースによるダウンロード機能を利用する場合やアプリケーション間で配備対象のクラスに重複
がある場合、同様にjava.lang.ClassCastException等の障害が発生する可能性があります。障害が発生する
場合には、キャッシュを行わないように次の設定を見直してください(デフォルト値はfalseです)。
- jp.co.nec.orb.PoolClasses
12.1.7. OadJの自動起動抑止対応
WebOTX V8.3 (Object Broker Java V10.3) において、ドメイン起動時に、デフォルトでOadJの自動起動を
行わないように変更しました。スタンドアロンで動作するJavaのCORBAサーバを運用する場合には、自動起動を
行うように設定変更を行ってください。
otxadmin> set server.objectbrokerservice.oadj.Startup=true
12.1.8. サーバプロセスを終了させるメソッド呼び出しでのエラーについて
Windows版ではサーバプロセスを終了させるメソッド呼び出しでエラーが
返ることがあります。このときサーバプロセスは正しく終了しています。
なお、サーバメソッド内でjava.lang.System.exitメソッド等により終了すると、
どのOSでも必ずエラーが返ります。exitで直接終了するとORBに制御が移らない
ことから、応答メッセージを送れないためです。
12.1.9. long double型の実装について
long double型は「IDL to Java Language Mapping:ptc/00-02-07」で
規定されていないので実装されていません。
12.1.10. 名前サービスのkindの名前制限について
名前サービスにおいて、kindに"_RR"を含む名前を登録してはいけません。 ラウンドロビン機能が使用します。
12.1.11. インプリメンテーション名の制限について
インプリメンテーション名に"CacheNameService"を使用してはいけません。 WebOTX Object
Brokerが使用します。
12.1.12. JNIライブラリのロードについて
Object Broker JavaTM は JNI を使用しています。Object Broker
JavaTM は次の JNI ライブラリをロードします。
- Windows
- ${INSTALL_ROOT}\ObjectBroker\bin\ospijni.dll
- Windows(x64)
- ${INSTALL_ROOT}\ObjectBroker\bin\ospijni64.dll
- その他の UNIX
- /opt/ObjectSpinner/lib/libospijni.so
Object Broker JavaTM の実装クラス群を -Xbootclasspath
オプションに指定して java コマンドを実行した場合、以下のいずれかの設定が必要です。
- sun.boot.library.path システムプロパティに、JNI
ライブラリが格納されているディレクトリを追加する
(sun.boot.library.path システムプロパティには、その JavaVM が必要とする JNI
ライブラリのディレクトリをすべて指定する必要があります)
- 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>はハードウェアによってディレクトリ名が異なります。
12.1.13. valuetypeのローカルコピーについて
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オプションが用意されています。
12.1.14. CSIv2機能利用時のSSL使用について
CSIv2 機能を使用する場合は原則として SSL を同時に使用することが必要です。SSL を使用せずに CSIv2
機能を使用するには、UseCSI プロパティに nossl
と指定してください。この場合、セキュリティ関連のデータが暗号化されずに通信されます。
12.1.15. OadJ起動時のアライブチェックでのエラー検出について
システムの負荷が高い場合などに、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.1.16. 複数バージョンインストール対応
WebOTX V9.3 (Object Broker Java V11.3) より、複数バージョンインストールに対応しました。
詳細については、[ 製品構成と提供機能 > 3. 提供機能 > 3.11. インストール/アンインストール > 3.11.3. 複数バージョンインストール > 3.11.3.4. Object Broker ] を参照してください。
12.2. 制限事項(Java)
12.2.1. RMI-IIOP のダイナミック・プロキシによる通信モード使用時の制限事項
RMI-IIOPのダイナミック・プロキシによる通信モードを使用する場合は、javax.rmi.PortableRemoteObject.narrow()の戻り値で取得したオブジェクトを、さらにnarrowの引数に渡してオブジェクトの取得を行うことはできません。
12.2.2. DynValueとDynAnyのオペレーション実装について
org.omg.DynamicAny.DynValueと、org.omg.DynamicAny.DynAnyの以下の
オペレーションは実装していません。
org.omg.DynamicAny.DynAny.insert_valuetype
org.omg.DynamicAny.DynAny.get_valuetype
12.2.3. パラメータレベルのフックについて
パラメータレベルのフックは使用できません。 これは、IDLコンパイラ(i2j)が既定値で出力するスタブ/スケルトンを
性能に有利なStream-based形式で出力するためです。もし、パラメータ
レベルのフックが必要な場合には、IDLコンパイラの-notstreamオプション
を使用して、旧形式(DII/DSI-based)のスタブ/スケルトンを出力して ください。
12.2.4. GIOP1.2のフラグメントメッセージ受信について
SINGLE_THREAD_MODEL(POAポリシー)の実装オブジェクトを、
PerClientThread(サーバ処理スレッドポリシー)で動作させる場合、
GIOP1.2のフラグメントメッセージを正常に受信できない場合があります。
12.2.5. CORBAアプリケーションコンパイル時の注意文について
JDK5.0以降を使用して、CORBAアプリケーションのコンパイルを行った場合、以下のような注意文が表示されます。
注: Sample.java の操作は、未チェックまたは安全ではありません。
注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。
12.2.6. ObjectSpinnerサービス停止時にOadJプロセスが残存する(HP-UX)
HP-UXではunameコマンドでホスト名を正しく表示するためにはドメインを除くホスト名部分を8文字以内とする必要があります。
ObjectSpinnerサービス停止時のOadJ停止処理においてunameコマンドによるホスト名の取得を行っていることから、ホスト名部分が9文字以上の場合、ObjectSpinnerサービスの停止時にOadJプロセスが残存します。
OadJプロセスが残存した場合、次の通りpsコマンドでOadJプロセスを特定し、killコマンドでプロセスを終了してください。
# ps -exf | grep OadJImpl
root 10705 5102 1 15:13:49 pts/0 0:00 grep OadJImpl
root 10585 10560 0 15:11:20 pts/0 0:01 /opt/java7/bin/java -Dorg.omg.CORBA.ORBClass=jp.co.nec.orb.OSPORB
-Dorg.omg.CORBA.ORBSingletonClass=jp.co.nec.orb.OSPORBSingleton jp.co.nec.orb.OadJ.OadJImpl -ORBInitialPort ...
# kill 10585
12.3. 注意事項(C++)
12.3.1. ソケットの共有について
- ソケットの共有に関して:
クライアントスレッドの数、サーバプロセス内のオブジェクトの数に関連なく、クライアントプロセスとサーバプロセスの間に1つのTCP/IPコネクションを作り共有することができます。この場合、並行して複数の呼び出しを行っているときに、そのうちのどれか1つの呼び出しがエラー(通信エラー、タイムアウト)を起こすと、他のすべての呼び出しも同様のエラーとなります。独立性を高めるためのソケットを一切共有しない設定も可能です。ただし、共有しない場合は毎回TCP/IPのコネクションを開設して利用後に閉じますので性能は若干低下します。
- ソケット共有時のエラーに関して:
クライアントは終了せずに同一サーバに対して複数回の呼び出しを行なうとします。サーバプロセスがクライアントからの1つの呼び出し完了後、次の呼び出しまでの間にいったん終了すると、サーバの終了直後にクライアントが行ったオブジェクト呼び出しが通信エラーとなります。このとき、再度オブジェクト呼び出しを行うと正常に通信が行われます。なおコネクションの共有をしない場合はこのエラーは起こりません。
12.3.2. イベントチャネルについて
接続断検出を行わない場合は、イベントチャネルの利用者が明示的にdisconnectを呼ばない限り接続が残っているものとして扱われます。
12.3.3. インタフェースリポジトリのコマンドについて
- instif,
rmifコマンドを実行すると処理が終了するまで^Cを受け付けません。もし間違った情報を登録してしまったときは、いったんrmifで間違った情報を削除してinstifしなおしてください。
- rmifしてもInterfaceRepository.irfにstring, sequence,
arrayの情報が残ります。これは、string, sequence, arrayには名前がないためです。
-
instifが異常終了したときは不完全なインタフェース情報がインタフェースリポジトリに登録されてしまうことがあります。不完全なインタフェース情報が登録されてしまったときにはrmifコマンドでいったんインタフェース情報を抹消してから再登録してください。
-
rmifはインタフェース情報を登録したときに用いた.ifファイルと厳密に一致しなくてもインタフェース情報を削除します。
12.3.4. ListenBackLogの設定について
ListenBackLogの数値が不足していると、サーバプロセス(たとえば、名前サービス)は立ち上がっているにも関わらず、アクセスできないという現象が発生することがあります。目安としては、OSのソケットの上限の許す範囲で、最大同時アクセスユーザ数×2を設定してください。
12.3.5. LocalStubの処理について
LocalStub経由では、POAManagerがholding状態であってもactive状態と同様、ただちにリクエストが処理されます。リクエストを貯えることはありません。
12.3.6. インタフェースリポジトリのコマンドについて互換性について
ObjectSpinnerのバージョン4.1までとそれ以降では、インタフェースリポジトリに互換性がありません。バージョン4.1までのインタフェースリポジトリ用に作られたアプリケーションとそれ以降
のインタフェースリポジトリ、もしくはその逆の組み合わせでは通信ができません。また、インタフェース情報を記録しているファイル(InterfaceRepository.irf)にも互換性がありません。
12.3.7. 使用できない引数について
アプリケーションは、"-ORBInitRef"および"-ORBDefaultInitRef"をアプリケーション独自の意味を持つ引数として使用してはいけません。例えば、下記に示すアプリケーション"my_app"は正しく動作しません。ORBのライブラリは"-ORBInitRef"キーワードがあると、その直後にURLがあることを期待します。
# my_app -my_option -ORBInitRef
12.3.8. 名前サービスへの登録名について
名前サービスにおいて、kindに"_RR"を含む名前を登録してはいけません。ラウンドロビン機能が使用します。
12.3.9. 使用できないインプリメンテーション名について
インプリメンテーション名に"CacheNameService"を使用してはいけません。Object
Brokerが使用します。
12.3.10. namesv.ndfの互換性について
ObjectSpinnerのバージョン4.3までの名前サーバで作成したnamesv.ndfを読み込むことはできますが、その逆はできません。また、一度バージョン4.4以降の名前サーバに読み込まれたnamesv.ndfは、バージョン4.3までの名前サーバでは使えません。
12.3.11. コードセットについて
以下のサーバとコードセットを使用して通信を行なうには、C++もしくはVBクライアント側で、SendCodeSetContextEverytimeの設定を"on"または"true"にする必要があります。
- ObjectSpinner R4.xのサーバ
- WebOTX上で動作するAP(Expressで動作するものは除く)
12.3.12. 旧版のObjectSpinnerの利用について
旧版のObjectSpinner(oad -v
で内部リビジョンが1.13以下の場合)および、omg.org/を含むリポジトリIDに対応していない他社製品と通信する場合、および旧版開発キットで作成されたアプリケーションを使用する場合、次の設定を行ってください。
名前 |
値 |
omg.org/が取り除かれる箇所 |
SysExcWithOMGORG |
off |
例外 |
NameServiceIdWithOMGORG |
off |
名前サービスオブジェクト |
12.3.13. クライアント側のフック機能について
クライアント側のフック機能を使用する場合、IDLコンパイラのコンパイルオプションに-Xdiiが必要です。
12.3.14. HP-UX11.xxのaC++が出力するWarningの抑止について
HP-UX
11.xx上でaC++を使用すると、302、740、749のWarningが出力されます。このWarning出力を抑制する場合は、「+W302,740,749」を指定してください。
12.3.15. クライアントOSでのリソース不足について
クライアントOSは、サーバOSに比べソケットリソースの上限が低くなっています。そのため、複数のサーバプロセスまたはクライアントプロセスを動作させると、NO_MEMORYエラーまたはENOBUFSエラーが発生する場合があります。
12.3.16. IDLコンパイラのオプションについて
IDLコンパイラのコンパイルオプションとして-I,-D,-Uを使用する場合には、オプションに続いてディレクトリまたはマクロを必ず指定してください。
12.3.17. Linux版のFD_SETSIZEについて
LINUX版でのFD_SETSIZEはシステムのデフォルトの値を使用します。RedHat7.1では1024となっています。
12.3.18. Linux版のコンパイルオプションについて
LINUX版のコンパイルオプションに関して必ず-D_GNU_SOURCEを指定してコンパイルを行ってください。
12.3.19. MesBufSizeの設定について
MesBufSizeのデフォルト値は8192ですが、Windows版では設定により4096になっています。MesBufSizeを増加させた場合にパフォーマンスが極端に落ちる場合には、設定SockBufSizeの値もあわせて増加させる必要があります。
12.3.20. CORBA::Anyのオペレータについて
R5.1でCORBA::Anyに次のオペレータが追加されました。
・CORBA::Any::operator<<=(char*) // 文字列の挿入
・CORBA::Any::operator>>=(const char*&) const // 文字列の取り出し
・CORBA::Any::operator>>=(const CORBA::Any*&) const // Anyの取り出し
R4.5以前で次のオペレータを使用していた場合、引数の型によっては、
前述のオペレータが呼ばれることがあり、その場合は動作が変わります。
・CORBA::Any::operator<<=(const char*) // 文字列の挿入
・CORBA::Any::operator>>=(char*&) const // 文字列の取り出し
・CORBA::Any::operator>>=(CORBA::Any&) const // Anyの取り出し
詳細はリファレンスマニュアルの「クラスAny」を参照してください。
12.3.21. R4.5以前とR5.1以降でのコードセットについて
R4.5以前とR5.1以降では、コードセットに関する設定の名前、内容、既定値が異なります。詳細は、運用マニュアルの「コードセットに関するオプション設定」を参照してください。
12.3.22. aCC(A.03.30以上)の不具合について
aCCバージョンA.03.30以上のバージョンでインライン展開の不具合が確認されております。該当のaCCバージョンをご使用の場合は、コンパイルオプションに+d(インライン展開を行わない)を指定してください。
下記のプログラムをコンパイル、実行した結果、"OK"と表示されない場合は、この問題に該当しています。この場合は、コンパイルオプションに+dを指定してください。
#include <stdio.h>
class A {
public:
A();
};
class B {
public:
B();
};
B::B()
{
A* a = new A;
}
static B __class_b;
A::A()
{
printf("OK\n");
}
int main(int argc, char** argv)
{
// B __class_b;
return 0;
}
12.3.23. コネクション無効時のリトライについて
コネクション無効時のリトライを有効にした場合、コネクション無効を検出するタイミングによっては、同一の要求メッセージがサーバに送信されてしまうことがあります。
12.3.24. 名前サーバのポート番号重複について
名前サーバが使用するポート番号の既定値は、CORBA標準仕様に合わせ2809となっています。OSによっては、このポート番号が他のプロセスの一時ポートとして使用される場合があり、
この場合、ポートが開けず、名前サーバの起動に失敗することがあります。特定のポート番号が、他のプロセスの一時ポートとして使用されることを回避するための方法は、[ リファレンス集 ドメイン構成・環境移行編 > 1. WebOTXの構成 > 1.1. 使用ポート番号 > 1.1.4. 自動的で割り当てられる一時ポート番号に関する注意事項 ] を参照してください。
12.3.25. windows.hのインクルードについて
Windows上でコンパイルを行う場合、orb.hより先にwindows.hをインクルードすることはできません。
orb.hより先にwindows.hをインクルードしてしまうと、ソケットAPIにWinSock1が設定され、Object Broker
C++が使用するWinSock2の設定と競合してコンパイルエラーが発生します。
orb.hの中でwindows.hをインクルードしていますので、windows.hを参照するヘッダファイルはorb.hの後にインクルードするようにしてください。
12.3.26. R6.1以降とR5.x以前の通信について
WebOTX Object Broker R6.1とObjectSpinner R5.Xおよびこれ以前の版を
利用するアプリケーションが相互に通信する環境では、次の制限があります。
-
R5.12(およびそれ以前)のライブラリの制限
R5.12(およびそれ以前)のライブラリを利用し、R6.10以降の名前サーバに対して、INS(インタオペラブル名前サーバ)へのオブジェクト呼び出しを行う場合、R6.10パッケージ付属のライブラリへの置換が必要です。
-
R5.12(およびそれ以前)の名前サーバの制限
R5.12(およびそれ以前)名前サーバはINS形式のオブジェクトキーを処理できません。INSによるオブジェクト呼び出しを行うときは、corbalocサーバ経由で名前サーバを呼び出す必要があります。その場合、INS URLのポート番号は、corbalocサーバのポート番号でなければなりません。
-
R6.10の仕様変更
R6.10のINS URLでは省略時のポート番号が以前と異なります。これは、OMGで仕様の明確化(省略時ポート番号の決定)が行われたためです。
-
R6.10の仕様変更(上記1,2の制限解除)
従来、INSによる呼び出しはcorbalocサーバと名前サーバの2段階処理でしたが、R6.10からは名前サーバが直接INSによる呼び出しを受けることができるようになりました。
このため、運用形態としては以下をおすすめします。
R6.10以降だけで構成されているシステムの場合:
名前サーバ動作マシン:
NameServicePort |
2809 |
CorbalocServerPort |
変更不要 |
CorbalocDefaultPort |
2809 |
corbalocサーバは起動しません。
クライアントマシン:
R6.10とR5.XあるいはR4.Xで構成されているシステムの場合:
ただし、R5.X、R4.X側でcorbalocに関する設定変更を行っていないことが下記設定を使用できる条件です。
R6.10名前サーバ動作マシン:
NameServicePort |
9827 |
CorbalocServerPort |
変更不要 |
CorbalocDefaultPort |
9827 |
corbalocサーバは起動しません。
R6.10クライアントマシン:
R5.X、R4.X名前サーバ動作マシン:
R6.10パッケージ付属の互換ライブラリをインストールします。
設定変更は不要です。下記設定となっていることを確認してください。
NameServicePort |
変更不要 |
CorbalocServerPort |
9827(未設定時既定値) |
CorbalocDefaultPort |
9827(未設定時既定値) |
corbalocサーバを起動します。
R5.X、R4.Xクライアントマシン:
R6.10パッケージ付属の互換ライブラリをインストールします。
設定変更は不要です。下記設定となっていることを確認してください。
CorbalocDefaultPort |
9827(未設定時既定値) |
12.3.27. コネクション制御ポリシーについて
多重化オブジェクトに含まれるIORに、コネクション制御ポリシーとして"ByReference"が指定されている場合は、コネクションラウンドロビン機能は利用できません。
12.3.28. マルチバイト文字のコード変換について
charの配列にマルチバイトの文字列を入れて通信を行なっても文字コード変換処理は行なわれません。文字コード変換の対象となる型はstring,
wstring, wcharです。
12.3.29. orbcustmの権限昇格について
WebOTX V8.3 (Object Broker C++ V10.3)より、orbcustmのマニフェストから権限昇格(requireAdministrator)の指定を削除しています。
WindowsのUAC(User Account Control)が有効な環境下で、orbcustmを用いて設定を更新する場合、管理者として実行する必要があります。
12.3.30. LogLimitの既定値変更について
WebOTX V8.4 (Object Broker C++ V10.4) より、LogLimitの既定値を0(上限無し)から10240(キロバイト)に変更しています。
12.3.31. oadプロセスの起動抑止について
WebOTX V9.2 (Object Broker C++ V11.2) より、WebOTXドメインのObject Brokerサービスにおいて、oadプロセスの起動をデフォルトで抑止しました。
これに伴い、Object Brokerコンフィグに、oadを使用するか否かの設定「UseOad(oadを使用)」(既定値:false)を追加しました。
次のような場合には、oadを起動する設定に変更してください。
- V9.1までと同様の運用形態にしたい場合(たとえばプロセス監視対象を変えたくない等)
- V9.1までの環境からObject Brokerサービスを利用する場合
- corbaloc,irsv,oadjを起動する場合
- oadによるサーバプロセス自動起動を使用する場合
WebOTXドメイン外での起動(Windowsのサービス、Unixの起動スクリプトによる起動)については、これまでと同様にoadプロセスをデフォルトで起動します。
12.3.32. 複数バージョンインストールについて
UNIX版WebOTX V9.3 (Object Broker C++ V11.3) より、複数バージョンインストールに対応しました。
これに伴い、次のような影響があります。
- 運用コマンドが、拡張子(".sh")を付加した名前に変更になりました。
- サービスの起動シェルスクリプトが、バージョン識別子(V11.3は"113")を付与した名前に変更になりました。
- OS標準のライブラリロードパスにシンボリックリンクが作成されなくなり、ビルド/実行時の明示的な指定が必要になりました。
詳細については[ 製品構成と提供機能 > 3. 提供機能 > 3.11. インストール/アンインストール > 3.11.3. 複数バージョンインストール > 3.11.3.4. Object Broker ] を参照してください。
12.4. 制限事項(C++)
12.4.1. wchar/wstringのconst宣言の記述について
wchar, wstring型のconst宣言は、IDL定義に記述することはできません。
12.4.2. グローバルスコープにおけるinterfaceのtypdef宣言について
IDL定義中のグローバルスコープにおいてインタフェースのtypedefを行った場合、typedefされた側の型を継承したオブジェクト(サーバント)の実装をすることはできません。
12.4.3. instifコマンドで登録できないIDL定義について
以下のIDL定義は、instifコマンドを用いてインタフェースの登録をすることができません。
・union型のcase文に、-1を利用する場合
・union型、struct型をネストして定義をする場合
12.4.4. CloseConnectionメッセージの扱いについて
CORBAのCloseConnectionメッセージを正しく処理することができません。CloseConnectionメッセージを受信後も、サーバ側から切断されるTCP/IPのコネクションを使用し続けるため、リクエスト送信時に例外が発生します。
この問題を回避するためには、クライアント無通信監視タイマを指定することで、サーバ側からCloseConnectionメッセージが送信される前にクライアント側でTCP/IPのコネクションを切断するようにしてください。
12.4.5. Unicodeのサロゲートペア文字の変換について
OSF_SJIS1(シフトJIS)とUTF8のコード変換機能では、Unicodeのサロゲートペアに該当する文字の変換を行うことはできません。wchar/wstringを使用してUnicodeで送受信してください。