工作区分区管理器接口
应用程序通过使用工作区分区管理器接口与工作区分区服务进行交互。用户可以从命名中检索工作区分区管理器接口的一个实例并使用以下部分中定义的方法。
工作区分区管理器接口的实现被绑定到 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 应用程序只能在远程和/或本地接口中的方法实现中使用工作区分区管理器接口;同样,servlet 只能在 HTTPServlet 类的服务方法中使用该接口。在 servlet 或企业 bean 的任何生命周期方法中使用工作区都被视作违背工作区编程模型,并且不受支持。
只有在 Java EE 客户机中,您才能使用 createWorkAreaPartition 方法按编程方式创建工作区分区。要在服务器中创建工作区分区,请使用 WebSphere® 管理控制台,如“配置工作区分区”一文中所述。您必须在完成服务器启动之前创建服务器进程中的所有分区,以便向适当的容器协调程序注册工作区服务。因此,在服务器启动之后,调用服务器进程中的 createWorkAreaPartition 方法将导致产生 java.lang.IllegalAccessException 异常。可以随时在 Java EE 应用程序客户机中调用 createWorkAreaPartition 方法。
配置工作区分区属性
此部分适用于在 WorkAreaPartitionManager 接口上使用 createWorkAreaPartition 方法。如上所述,只应在 Java EE 客户机上使用此方法。要在服务器上创建分区,请参阅“配置工作区分区”。
WorkAreaPartitionManager 接口中的“createWorkAreaPartition”方法采用 java.util.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.workare 包。在信息中心目录中,生成的 API 文档的路径是:
。