すべての CMI サーブレットおよび EJB ビジネス・メソッドの国際化対応ポリシーには、
コンテナーが起動に際してスコープ宣言する国際化対応コンテキストを指定するためのコンテナー国際化対応属性 が
含まれています。
コンテナー国際化対応属性には、次の 3 つの主なフィールドがあります。
利便性を向上するために、名前付きコンテナー国際化対応属性を作成し、以下のサブセットに関連付けることができます。
- Web モジュール内の CMI サーブレット
- Enterprise JavaBeans (EJB) モジュール内の CMI Enterprise Bean のビジネス・メソッド
- Web サービス対応 Session Bean のビジネス・メソッド。以下の
説明において、サポート Enterprise Bean という用語は、CMI Enterprise Bean と Web サービス対応 Session Bean の両方を指しています。
「Run-as」フィールド
「Run-as」フィールドには、
コンテナーがメソッドに対してスコープ宣言できる 3 つのタイプの起動コンテキストから、
いずれか 1 つを指定します。サーブレット・サービス・メソッドおよび EJB ビジネス・メソッドの場合、コンテナーは、「Run as」フィールドの設定に従って起動国際化対応コンテキストを構成し、
メソッドのインプリメンテーションに委任する前に、このコンテキストを現行スレッドに関連付けます。
デフォルトでは、サーブレット・サービス・メソッドおよび EJB ビジネス・メソッドの呼び出しは、ポリシーの属性の「Run as」フィールドに他の設定が指定されていない限り、暗黙的に呼び出し元として実行されます (RunAsCaller)。EJB クライアント・アプリケーションおよび AMI サーバー・コンポーネントは、
常にサーバーとして実行されます (RunAsServer)。
「
Run as」フィールドには、以下の起動コンテキストのタイプを指定できます。
- 呼び出し元
- コンテナーは、呼び出しプロセスの国際化対応コンテキストの下でメソッドを呼び出します。コンテキスト・エレメントに欠落がある場合、コンテナーは Java 仮想マシン (JVM) の、対応するデフォルトのコンテキスト・エレメントを提供します。
呼び出しプロセスの起動コンテキストの下で起動を実行する場合は、「Run as caller」を選択してください。
- サーバー
- コンテナーは、JVM のデフォルト・ロケールおよび時間帯の下でメソッドを呼び出します。JVM の起動コンテキストの下で起動を実行する場合は、「Run as server」を選択してください。
- 指定
- コンテナーは、属性で指定された国際化対応コンテキストの下でメソッドを呼び出します。
ポリシーで指定されているカスタム起動コンテキストの下で起動を実行する場合は、「Run as specified」を選択し、次に、「ロケール」および「時間帯 ID」フィールドに入力してカスタム・コンテキスト・エレメントを提供します。
要確認: Java Message Service (JMS) メッセージには、国際化対応コンテキストは含まれていません。コンテナー管理メッセージ・ドリブン Bean を呼び出し元として実行するよう構成することはできますが、コンテナーは、[CMI, RunAsCaller] として構成された任意のメッセージ・ドリブン Bean の
onMessage() メソッドを呼び出すときに、サーバー・プロセスのデフォルト・エレメントを関連付けます。
また、「Run as」フィールドを Web サービス・ビジネス・メソッドに
構成することもできます。
「ロケール」フィールド
「
ロケール」フィールドには、
コンテナーが呼び出しに対してスコープ宣言するロケールの番号付きリストを指定します。ロケールとは、特定の地理的、文化的、または国家的領域を示し、以下の 3 つのフィールドが含まれます。
- 言語コード。理想的には、言語コードは ISO 639 によって定義された小文字の 2 文字コードのうちの 1 つですが、言語コードは ISO コードに限定されないので、必須フィールドではありません。有効ロケールには、国別コードを指定しない場合、
言語コードを指定する必要があります。
- 国別コード。理想的には、国別コードは ISO 3166 標準によって定義された大文字の 2 文字コードのうちの 1 つですが、言語コードは ISO コードに限定されないので、必須フィールドではありません。有効ロケールには、言語コードを指定しない場合、
国別コードを指定する必要があります。
- バリアント。バリアントは、ベンダー特定コードです。バリアントは、必須フィールドではなく、
アプリケーションまたはプラットフォームの特定の要件に従って、言語コードおよび国別コードを補足するためだけのものです。
有効ロケールには、少なくとも言語コードまたは国別コードを指定する必要があり、
バリアントは常にオプションです。リストの最初のロケールは、国際化対応コンテキスト API の getLocale メソッドを使用して起動コンテキストにアクセスするときに戻されます。
「時間帯 ID」フィールド
「時間帯 ID」フィールドには、コンテナーが呼び出しに対してスコープ宣言する時間帯の短縮 ID を指定します。
また、「時間帯 ID」フィールドを Web サービス・ビジネス・メソッドに構成することもできます。
時間帯は、相対時刻を表し、夏時間調整情報を計算します。
有効な ID は、java.util.TimeZone 型によってサポートされる時間帯を示します。
つまり、有効な ID は、メソッド java.util.TimeZone.getAvailableIds() によって戻される時間帯 ID リストに表示される ID か、または GMT[+|-]hh[[:]mm] の形式を持つカスタム ID です (例えば、America/Los_Angeles、GMT-08:00 は有効な時間帯 ID です)。