覆盖工作区属性

关于此任务

工作区本来就与创建它们的进程关联在一起。在样本应用程序中,客户机启动一个工作区并将站点标识和优先级属性设置到其中。当客户机进行远程调用时,该工作区将传播到服务器。

应用程序将嵌套工作区以暂时覆盖从客户机进程导入的属性。嵌套机制是自动的;从现有工作区的范围内的 UserWorkArea 接口启动的调用将创建一个嵌套工作区,它继承封闭式工作区的属性。设置到嵌套工作区中的属性与启动工作区的进程紧密关联;嵌套工作区必须在创建它们的进程中完成。如果创建进程未完成工作区,工作区设施将在进程退出时终止工作区。当嵌套工作区完成后,将复原封闭式工作区的原始视图。但是,下游进程无法分解与线程关联的完整工作区组合的视图。

应用程序使用属性方式将属性设置到工作区中,以确保给定工作区范围中的特定属性是固定的(不可移除)或只读的(不可覆盖)。

示例

在以下代码示例中,服务器端样本 Bean 尝试直接写到导入的工作区;因为 UserWorkArea 分区未定义为双向,所以不允许此操作并抛出 NotOriginator 异常。当 UserWorkArea 分区未定义为双向时,样本 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");

      ...
   }
}

在示例应用程序中,客户机将站点标识属性设置为只读;这可以确保请求始终与客户机的公司标识相关联。服务器不能覆盖嵌套工作区中的这个值。在以下代码示例中,SimpleSampleBean 尝试更改它创建的嵌套工作区中的站点标识属性的值。

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) {
      }
      ...
  }
}

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twa_override
文件名:twa_override.html