作業域区画マネージャーのインターフェース
アプリケーションは、作業域区画マネージャーのインターフェースを使用して 作業域区画サービスと対話します。作業域区画マネージャーの インターフェースのインスタンスはネーミングでリトリーブすることが可能で、以下のセクションで定義されたメソッドにより 使用することができます。
作業域区画マネージャー・インターフェースの実装は、 Java™ ネーミングの java:comp/websphere/WorkAreaPartitionManager にバインド されます。このインターフェースでは、作業域区画の作成、リトリーブ、および 操作を担当します。
package com.ibm.websphere.workarea;
import com.ibm.websphere.workarea.UserWorkArea;
import com.ibm.websphere.workarea.PartitionAlreadyExistsException;
import com.ibm.websphere.workarea.NoSuchPartitionException;
import java.util.Properties;
public interface WorkAreaPartitionManager {
//Returns an instance of a work area partition for the given name, or throws an exception if the
//partition name doesn't exists. public UserWorkArea getWorkAreaPartition(String partitionName) throws NoSuchPartitionException;
//Returns a new instance of a work area partition (an implementation of the UserWorkArea interface)
//or throws an exception if the partition name already exists. The createWorkAreaPartition should
//only be used within a Java EE platform client and NOT on the
//server. To create a work area partition on the server, use the WebSphere administrative
//console.
public UserWorkArea createWorkAreaPartition(String partitionName, Properties props) throws
PartitionAlreadyExistsException, java.lang.IllegalAccessException;
}
}
EJB アプリケーションは、リモート・インターフェースまたはローカル・インターフェースのいずれかまたは両方のメソッドの実装内でのみ、作業域区画マネージャーのインターフェースを使用できます。同様に、サーブレットは、HTTPServlet クラスの service メソッド内でのみ、このインターフェースを使用できます。 サーブレットまたはエンタープライズ Bean のライフサイクル・メソッド内での作業域の使用は、作業域のプログラミング・モデルからの逸脱と見なされ、サポートされません。
createWorkAreaPartition メソッドを使用した 作業域区画のプログラマチックな作成は、Java EE クライアントでのみ使用可能です。 サーバーに作業域区画を作成するには、『作業域区画の構成』の項に説明されているように、WebSphere® 管理コンソールを使用します。サーバー・プロセスのすべての区画は、サーバーの開始が 完了する前に作成される必要があります。それにより、作業域サービスが適切な コンテナー・コラボレーターに登録されます。したがって、サーバーの開始後に サーバー・プロセスで createWorkAreaPartition メソッドを呼び出すと、 java.lang.IllegalAccessException 例外という結果になります。 createWorkAreaPartition メソッドは、Java EE アプリケーション・クライアントでいつでも呼び出すことができます。
構成可能な作業域区画のプロパティー
このセクションは、WorkAreaPartitionManager インターフェースの createWorkAreaPartition メソッドを使用する場合に適用されます。前述のように、このメソッドは、Java EE クライアントでのみ使用する必要があります。サーバーに区画を作成する場合は、『作業域区画の構成』を参照してください。
WorkAreaPartitionManager インターフェースの「createWorkAreaPartition」メソッドは、java.util.Properties オブジェクトを受け取ります。この Properties オブジェクト、およびそれに含まれているプロパティーは、作業域区画の定義に使用されます。以下に、Properties オブジェクトの作成およびプロパティーの設定の例を示します。
java.util.Properties props = new java.util.Properties():
props.put("maxSendSize","12345");
区画を定義するための、受け入れ可能なキー/値のペア (プロパティー) は、以下のとおりです。
- maxSendSize - リモート呼び出しで送信できる作業域の最大サイズ (バイト) を示します。許容値は以下のとおりです。
- "-1" = デフォルト・サイズである 32767 を使用します。
- "0" = サイズに制限はありません。この値には規制がないので、アプリケーションが持つ作業域の数に応じて、わずかですが、パフォーマンスを向上させるのに役立つ場合があります。
- "1" = Integer.MAX_VALUE
- maxReceiveSize - 受信可能な作業域の最大サイズ (バイト) を示します。許容値は以下のとおりです。
- "-1" = デフォルト・サイズである 32767 を使用します。
- "0" = サイズに制限はありません。この値には規制がないので、アプリケーションが持つ作業域の数に応じて、わずかですが、パフォーマンスを向上させるのに役立つ場合があります。
- "1" = Integer.MAX_VALUE
- Bidirectional - ダウンストリーム・プロセスによって変更される作業域コンテキストを、そのコンテキストの発生元に向かってアップストリームに伝搬する必要があるかどうかを示します。このプロパティーについて詳しくは、『作業域区画サービス』の項のセクション「作業域コンテキストの双方向伝搬」を参照してください。許容値は以下のとおりです。
- "true" = コンテキストの変更は、リモート呼び出しから戻されます。
- "false" = コンテキストの変更は、リモート呼び出しから戻されません。
重要: デフォルトの設定値は "false" です。 - DeferredAttributeSerialization - プロセスごとに正確に一度だけ発生するように、属性のシリアライゼーションを最適化する必要があるかどうかを示します。このプロパティーについて詳しくは『作業域区画サービス』の項の「作業域コンテキストの属性のシリアライゼーションの延期」セクションを参照してください。許容値は以下のとおりです。
- "true"
- 属性が作業域に設定されている場合は、リモート要求が出されるまで属性はシリアライズされません。
- 応答によって値が変更されない場合、それ以降の要求に対してはシリアライズされた形式が使用されます。ライブ・オブジェクトは、getter を使用して取り出されます。
- リモート要求中に要求が出された場合、値はオンデマンドで一度だけデシリアライズされます。 シリアライズされた形式は、このリモート・プロセスのこの分散スレッドでの以降の要求に使用されます。 プロセス内の同じ属性に対するそれ以降の要求は、既にデシリアライズされている値を戻します。 DeferredAttributeSerialization との並行性には、リスクが伴います。クライアント・プロセスでの シリアライゼーションの後に、属性を更新しても、その値が UserWorkArea インターフェースを介して 明示的にリセットされるまでは、その属性に対する更新は作業域のコピーには反映されません。 ダウンストリーム・プロセスで取り出された参照に加えられた変更は、 UserWorkArea インターフェースを介して明示的にリセットされない限り、 それ以降のダウンストリーム要求には伝搬されません (または、応答時に変更値として戻されます)。
- "false"
- 属性が作業域に設定されている場合は、その属性は即時にシリアライズされ、バイトが保管されます。
- 属性が作業域から取り出されている場合、その属性は常に保管されているバイトからデシリアライズされます。
重要: デフォルト値は "false" です。 - "true"
- EnableWebServicePropagation - WebService 呼び出しで作業域コンテキストを伝搬する必要があるかどうかを示します。許容値は以下のとおりです。
- "true" = WebService 呼び出しでコンテキストが伝搬されます。
- "false" = WebService 呼び出しでコンテキストは伝搬されません。
重要: デフォルト値は "false" です。
例外
- PartitionAlreadyExistsException
- この例外は、作業域区画を既に存在する区画名で作成しようとした場合に、 WorkAreaPartitionManager 実装上の createWorkAreaPartition メソッドにより生成されます。区画名は固有でなければなりません。
- NoSuchPartitionException
- この例外は、存在しない区画名で作業域区画が要求された場合に、 WorkAreaPartitionManager 実装上の getWorkAreaPartition メソッドにより生成されます。
- java.lang.IllegalAccessException
- この例外は、サーバー・プロセスの実行時に作業域区画を作成しようとした場合、 WorkAreaPartitionManager 実装上の createWorkAreaPartition メソッドにより生成されます。このメソッドは、Java EE クライアント・プロセス でのみ使用可能です。サーバー・プロセスで区画を作成するには、管理コンソールを 使用する必要があります。
作業域について詳しくは、アプリケーション・プログラミング・インターフェース (API) の com.ibm.websphere.workarea パッケージを参照してください。 生成済み API 文書は、インフォメーション・センターの目次で、
の順にたどって入手できます。