Interstage Application Server V7.0(Interstage V7.0)での変更内容を説明します。
■システム資源について
共有メモリに対するシステムパラメタの計算式が変更されました。詳細は“チューニングガイド”を参照してください。
■リクエストの振り分け方式について
以下に該当するプロセス多重のCORBAサーバに対するリクエストの振り分け方式が変更されました。
ワークユニット定義の“Request Assignment Mode”ステートメントに“FIFO”を指定したCORBAワークユニット
ワークユニットでないCORBAサーバアプリケーション
Interstage V7.0以降でのリクエストの振り分け方式では、振り分け先の対象となるサーバプロセスの中で最も長い時間リクエストが振り分けられていないサーバプロセスにリクエストを振り分けます。
リクエストを振り分けたサーバプロセスからリクエスト処理用の空きスレッドがなくなった場合、振り分け先の対象から外れます。
振り分け先の対象から外れていたサーバプロセスに空きスレッドができた場合、振り分け先の対象に含めます。
サーバのプロセス多重度を3、スレッド多重度を2とした場合(多重度はOD_impl_instコマンドで指定します。)
■HTTPトンネリングについて
HTTPトンネリングは以下の製品で利用可能です。
Interstage Application Server Enterprise Edition
gwconfigファイルの以下のパラメタについて指定範囲が変更されました。詳細については“チューニングガイド”を参照してください。
パラメタ名 | Interstage V6.0以前 | Interstage V7.0以降 |
---|---|---|
timeout_response | 1~3600 | 0~100000000 |
timeout_session | 1~900 | 0~2147483647 |
timeout_connection | 1~600 | 0~2147483647 |
■サンプルプログラムについて
Interstage V7.0.1、V7.0L11では、C言語およびC++言語のサンプルプログラムのサーバの動作モードがCOMPATIBLEからSYNC_ENDに変更されました。Interstage管理コンソールを使用してサンプルのサーバアプリケーションをCORBAワークユニットに配備する場合、動作モードにSYNC_ENDを指定する必要があります。
■クライアントタイムアウトの動作について
configパラメタ“period_receive_timeout”に0を設定した際のクライアントの動作が変更されました。
Interstage V6.0以前(変更前)
HTTPトンネリングを使用しているクライアントは、リクエスト送信後に0秒で即時タイムアウトとなります。
HTTPトンネリングを使用していないクライアントは、リクエスト送信後にサーバから返信が来るまで無限待ちを行います。
Interstage V7.0以降(変更後)
HTTPトンネリングの使用・未使用にかかわらず、クライアントは、リクエスト送信後にサーバから返信が来るまで無限待ちを行います。
■CORBA-Javaアプリケーションのメモリ使用改善について
CORBA-JavaアプリケーションでCORBAサービスが獲得する通信バッファの解放タイミングが、FullGC依存から通信ごとに変更されたため、アプリケーションのメモリ使用量が改善されました。
この改善効果を得るためには、IDLのコンパイルおよびJavaのコンパイルを再度実行してください。
なお、JDK1.3以前を使用する場合は、ネーミングサービスへのアクセスに使用しているクラスをorg.omg.CosNaming.NamingContextから、org.omg.CosNaming.NamingContextExtに変更して、ネーミングサービスへアクセスする必要があります。
Interstage V6.0でのプログラム記述例
-------------------------------------------------------------------------------
org.omg.CORBA.Object tmpObj =
Orb.resolve_initial_referneces("NamingService");
org.omg.CosNaming.NamingContext Cos =
org.omg.CosNaming.NamingContextHelper.narrow(tmpObj);
-------------------------------------------------------------------------------
Interstage V7.0でのプログラム記述例
-------------------------------------------------------------------------------
org.omg.CORBA.Object tmpObj =
Orb.resolve_initial_referneces("NamingService");
org.omg.CosNaming.NamingContextExt Cos =
org.omg.CosNaming.NamingContextExtHelper.narrow(tmpObj);
-------------------------------------------------------------------------------
■Windows(R)のアプリケーションのコンパイルオプション変更について
CORBAサービスが提供しているライブラリの使用するランタイムがスタティックバージョンのライブラリ(Visual C++のコンパイルオプションで“マルチスレッド”を選択)からダイナミックバージョンのライブラリ(Visual C++のコンパイルオプションで“マルチスレッド(DLL)”を選択)に変更されました。
Windows(R)では一つのプロセス内で、スタティックバージョンとダイナミックバージョンのランタイムライブラリの混在が許されていないため、Visual C++のコンパイルオプションで“使用するランタイム”を“マルチスレッド”に設定して作成したInterstage V6.0以前のC/C++ユーザアプリケーションは、Interstage V7.0以降で使用することができません。そのため、ユーザアプリケーションを移行する場合には、ユーザアプリケーションのコンパイルオプションも変更してアプリケーションを再ビルドする必要があります。再ビルドを行わないとCORBAワークユニットアプリケーションの標準出力/標準エラー出力がstdoutファイル/stderrファイルに出力されません。また、アプリケーションの動作に異常が発生する可能性があります。
以下のような手順で表に示すVisual C++のオプションを設定してください。
[プロジェクト]-[プロパティ]-[構成プロパティ]-[C/C++]
カテゴリ | 項目 | 設定値 |
---|---|---|
コード生成 | 使用するランタイム | マルチスレッド(DLL) (注) |
注) Interstage V6.0以前で“マルチスレッド”と設定されていた値を変更します。
■プロセスモードクライアントの無通信監視切断時の動作について
無通信監視(configパラメタ“period_idle_con_timeout”で設定されるタイムアウト監視)によるコネクション切断が発生した際の、プロセスモードクライアントにおける動作が変更されました。
Interstage V6.0以前(変更前)
無通信監視切断発生後に再接続を行おうとすると、COMM_FAILURE例外が発生して接続に失敗します。
Interstage V7.0以降(変更後)
無通信監視切断発生後に再接続を行う場合、同期通信のときは接続に成功します。非同期通信のときは、Interstage V6.0以前と同様にCOMM_FAILURE例外が発生して接続に失敗します。
■CORBAサービス資源ファイルの移入について
CORBAサービス資源ファイルの移入において、既存環境のインタフェースリポジトリサービス資源のデータベースの移入処理が変更されました。
Interstage V6.0以前(変更前)
CORBAサービス資源ファイルを移入する際、インタフェースリポジトリサービス資源のデータベースの格納先に、すでにインタフェースリポジトリサービス資源のデータベースファイルが存在している場合は、エラーメッセージod16271を出力し、移入処理を中止します。
そのため、移入する前に、必ずインタフェースリポジトリサービス資源のデータベースの格納先に存在するインタフェースリポジトリサービス資源のデータベースを削除しておく必要があります。
Interstage V7.0以降(変更後)
CORBAサービス資源ファイルを移入する際、インタフェースリポジトリサービス資源のデータベースの格納先に、すでにインタフェースリポジトリサービス資源のデータベースファイルが存在し、かつデータベースファイルが移入前のローカルホストのインタフェースリポジトリが使用しているファイルであった場合は、データベースファイルを削除して移入処理を続行します。データベースファイルが移入前のローカルホストのインタフェースリポジトリが使用しているファイルではなかった場合は、Interstage V6.0以前と同様にエラーメッセージod16271を出力し、移入処理を中止します。
したがって、移入前のローカルホストのインタフェースリポジトリを使用する環境に対して移入する場合、事前にインタフェースリポジトリサービス資源のデータベースを削除しておく必要はありません。
■CORBA-Javaアプリケーションのオブジェクトリファレンス生成について
CORBA-Javaサーバアプリケーションでオブジェクトリファレンスを動的生成した場合、使用可能なオブジェクトID(oid)はシステム内で一意となります。
このため、デフォルトインスタンス方式のCORBA-Javaサーバアプリケーションをプロセス多重で動作させる場合、RequestProcessingポリシに“USE_DEFAULT_SERVANT”を指定していないPOA(rootPOAなど)を使用して動的に作成したオブジェクトリファレンスで、サーバアプリケーションを呼び出すと、システム例外OBJECT_NOT_EXISTが発生することがあります。
デフォルトインスタンス方式のCORBA-Javaサーバアプリケーションをプロセス多重で動作させる場合、アプリケーションプログラムにおいて以下のオブジェクトリファレンスを使用してください。
RequestProcessingポリシに“USE_DEFAULT_SERVANT”を指定したPOAを使用して動的生成したオブジェクリファレンス
事前生成方式で作成したオブジェクトリファレンス
デフォルトインスタンス方式の詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“インスタンス管理とアプリケーション形態”-“アプリケーション形態の種別”を参照してください。
■CORBA-JavaアプリケーションのHelperクラスについて
Interstage V7.0以降では、Helperクラスの修飾子にabstarctが追加されました。
CORBA-Javaアプリケーションにおいて、Helperクラスをインスタンス化している場合は、アプリケーションのコンパイル時・実行時にエラーが発生します。アプリケーションにおいて、インスタンス化しないでHelperクラスのメソッドを使用するように修正してください。
■Javaインタフェースについて(JDK/JRE1.3以前からJDK/JRE1.4以降への移行)
Interstage V7.0以降では、標準インストールでインストールされるJDK/JREのバージョンがJDK/JRE1.4以降に変更されました。
JDK/JRE1.3以前で動作していたCORBA-JavaアプリケーションをJDK/JRE1.4以降へ移行する場合は、JDK1.4以降のjavaコンパイラで再度アプリケーションをコンパイルする必要があります。JavaインタフェースのJDK/JRE1.3以前からJDK/JRE1.4以降への移行については、“アプリケーション作成ガイド(CORBAサービス編)”の“Javaインタフェース(JDK/JRE1.3以前からJDK/JRE1.4以降への移行)”を参照してください。
■コマンドの引数指定方法について
odlistnsコマンドおよびodimportnsコマンドのオプションの指定方法が変更されました。
Interstage V6.0以前(変更前)
odlistnsコマンドおよびodimportnsコマンドの実行時に、1つのオプションの要素に複数のオプションを指定した場合は、複数のオプションとして動作します。たとえば、“odlistns -lR”と実行すると、“odlistns -l -R”として動作します。ただし、推奨ではありません。
Interstage V7.0以降(変更後)
プラットフォーム間でコマンドの指定方法を統一したことにより、“リファレンスマニュアル(コマンド編)”の“形式”で説明している指定方法以外では動作しません。したがって、odlistnsコマンドおよびodimportnsコマンドの実行時に、1つのオプション要素に複数のオプションを指定した場合は、最初のオプションだけが有効となり、2つ目以降のオプションは無効となります。複数のオプションを指定する場合は、“リファレンスマニュアル(コマンド編)”の“形式”のとおり、 オプションごとに指定してください。