WebSphere Application Server Network Deployment, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

作業域プロパティーのオーバーライド

このタスクについて

作業域は本質的に、作業域を作成するプロセスと関連しています。 サンプル・アプリケーションでは、クライアントが作業域を開始し、 その作業域にサイト ID と優先順位プロパティーを設定します。 この作業域は、クライアントがリモート呼び出しを行う際にサーバーに伝搬されます。

アプリケーションは、クライアント・プロセスからインポートされたプロパティーを 一時的にオーバーライドするために、作業域をネストします。 ネスティングのメカニズムは自動的に行われます。 既存の作業域の有効範囲内から UserWorkArea インターフェース上で begin を呼び出すと、 ネストされた作業域が作成されます。この作業域は、 囲んでいる作業域からプロパティーを継承します。 ネストされた作業域に設定されたプロパティーは、 作業域が開始されたプロセスと深く関連しています。ネストされた作業域は、 その作業域を作成したプロセス内で完了しなければなりません。 作業域がそれを作成したプロセスによって完了されない場合は、 プロセスが終了したときに、作業域機能がその作業域を終了します。 ネストされた作業域が完了すると、囲んでいる作業域の元のビューが復元されます。 しかし、スレッドと関連付けられているすべての作業域のビューは、 ダウンストリーム・プロセスでは分解できません。

アプリケーションは、プロパティー・モードを使用して 作業域内にプロパティーを設定し、指定された作業域の有効範囲内で、 特定のプロパティーを確実に固定 (除去不可)、あるいは読み取り専用 (オーバーライド不可) にします。

次のコード例では、サーバー・サイドのサンプル Bean が、インポートされている 作業域に直接書き込もうとしています。UserWorkArea 区画に双方向の定義が行われていないため、 直接書き込みアクションが許可されず、NotOriginator 例外がスローされます。 UserWorkArea 区画が双方向に定義されていない場合、2 つめのコード例に示すように、 インポートされたすべてのプロパティーをオーバーライドするには、 サンプル Bean が独自の作業域を開始する必要があります。 ユーザー定義された区画中の作業域が使用され、双方向に定義されている場合、この Bean は 他の作業域を開始する前に、その作業域の中にコンテキストを設定できます。 双方向に定義されている場合、設定されたこのコンテキストは、呼び出し元に伝搬されます。 追加情報については、例: 双方向伝搬 を 参照してください。

public class SimpleSampleBeanImpl implements SessionBean {

   public String [] test() {
     ...
     String invoker = userWorkArea.getName();

     try {
       userWorkArea.set("key", "value");
     }
     catch (NotOriginator e) {
     }
     ...
  }
}

次のコード例は、ネストされた作業域の開始を示しています。 この場合、このネストされた作業域の識別には、それを作成するクラスの名前が使用されています。

public class SimpleSampleBeanImpl implements SessionBean {

   public String [] test() {
      ...
      String invoker = userWorkArea.getName();
      try {
        userWorkArea.set("key", "value");
      }
      catch (NotOriginator e) {
      }

      // Begin a nested work area. By using the name of the creating
      // class as the name of the work area, we can avoid having
      // to explicitly set the name of the creating class in
      // the work area.
      userWorkArea.begin("SimpleSampleBean");

      ...
   }
}

このアプリケーション例では、クライアントがサイト ID プロパティーを読み取り専用に 設定します。これにより、要求が常にクライアントの企業 ID と関連付けられることが保証されます。 サーバーは、ネストされた作業域ではその値をオーバーライドできません。 次のコード例では、SimpleSampleBean が作成したネスト済み作業域で、SimpleSampleBean がサイト ID プロパティーの値を変更しようとしています。

public class SimpleSampleBeanImpl implements SessionBean {

  public String [] test() {
      ...

      String invoker = userWorkArea.getName();
      try {
        userWorkArea.set("key", "value");
      }
      catch (NotOriginator e) {
      }

      // Begin a nested work area.      userWorkArea.begin("SimpleSampleBean");

      try {
        userWorkArea.set("company",
                         SimpleSampleCompany.London_Development);
      }
      catch (NotOriginator e) {
      }
      ...
  }
}



関連資料
例: SimpleSample アプリケーションにおける作業域の使用
例: 双方向伝搬
関連情報
ネストされた作業域
作業域のプロパティー・モード
作業域におけるプロパティーの設定
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:44:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/workarea/tasks/twa_override.html