2.3 ステートレス・オブジェクト・モデルの使用方法
ここでは、Productionサンプル・アプリケーションにおいて、スケーラビリティを増大させるために、オブジェクト状態管理をどのようにRegistrarオブジェクトおよびTellerオブジェクトで使用するかを説明します。オブジェクト状態管理の概要は、「オブジェクト状態管理の使用」を参照してください。
スケーラビリティを増大させるには、Productionサーバー・アプリケーションで、RegistrarおよびTellerオブジェクトにmethodアクティブ化ポリシーを構成します。これら2つのオブジェクトにmethodアクティブ化ポリシーを割り当てた結果、動作に次の変化がみられます。
- これらのオブジェクトが呼び出されるときは常に、適切なサーバー・グループ内のOracle Tuxedoドメインによってインスタンス化されます。
- 呼出しが完了すると、Oracle Tuxedoドメインによりこれらのオブジェクトは非アクティブ化されます。
BasicからWrapperまでの各種サンプル・アプリケーションでは、Registrarオブジェクトはプロセス・バウンド・オブジェクト(processアクティブ化ポリシー)となっていました。Registrarオブジェクトに対するクライアント・リクエストはすべて、常にサーバー・マシンのメモリー内の同じオブジェクト・インスタンスに送られました。Basicサンプル・アプリケーションの設計は、小規模なデプロイメントに適しています。しかし、クライアント・アプリケーションのリクエストが増すにつれて、Registrarオブジェクト上のクライアント・リクエストはキューに入れられるようになるため、レスポンス時間が遅くなります。
ただし、RegistrarおよびTellerオブジェクトがステートレス・オブジェクト(methodアクティブ化ポリシー)であり、これらのオブジェクトを管理するサーバー・プロセスがレプリケートされている場合、RegistrarおよびTellerの各オブジェクトは複数のクライアント・リクエストを並列処理できます。これらのオブジェクトで処理できる同時のクライアント・リクエストの数で制約があるのは、RegistrarおよびTellerのオブジェクトをインスタンス化できる、利用可能なサーバー・プロセスの数のみです。したがって、これらのステートレス・オブジェクトはマシン・リソースのより効率的な使用と、クライアント・レスポンス時間の短縮を実現します。
最も重要なのは、Oracle Tuxedo CORBAで、RegistrarおよびTellerオブジェクトのコピーを各レプリケート・サーバー・プロセス内でインスタンス化できるように、オブジェクトの各コピーが一意である必要があることです。これらのオブジェクトの各インスタンスをユニークにするために、オブジェクトのファクトリではユニークなオブジェクトIDをオブジェクトに割り当てる必要があります。
Oracle Tuxedoアプリケーションがレプリケート・サーバー・アプリケーション・プロセスのそれぞれでRegistrarおよびTellerオブジェクトのコピーをインスタンス化するために、RegistrarおよびTellerオブジェクトの各コピーには一意のオブジェクトID (OID)が付与されます。ユニークなOIDは、これらのオブジェクトを作成するファクトリで割り当てられます。ユニークなオブジェクトIDの生成の詳細は、『CORBAサーバー・アプリケーションの作成』を参照してください。その他の設計上の考慮事項については、「設計上の追加考慮事項」を参照してください。
親トピック: CORBAサーバー・アプリケーションのスケーリング