【下载】WebSphere Process Server V7 中的并发人工任务分配
资料简介:
简介: 当一组工作项目被用于分配 WebSphere® Process Server 中的任务所有者时,许多组成员可能会尝试同时声明一个任务。在 V7 之前的版本中,避免一个并发异常的惟一方法是封装同步块中决定和声明任务的查询。本文提出一个新的方法使用查询表声明任务。
概述
当一个人工任务分配给一组潜在所有者时,例如,WebSphere Process Server 中的 Everyone 或一个 Group 工作项目,组内的多个成员试图同时声明一个任务。在之前的 WebSphere Process Server 版本中,消除并发异常的惟一方法是封装同步块中决定和声明任务的查询(或使用 Java™ 5 中的可重入锁)。同步方法有一些缺陷,由以下原因引起的: 同步块在工作项目上的员工查询完成之前执行。这就导致了访问任务时所有线程阻塞,不仅仅是访问任务和工作组成员的用户请求阻塞。同步块被限制在一个 JVM 上,请求被路由到集群中的另一个节点并引起接收节点中的并发异常,这种可能性仍然存在。
早期的申明任务方法
在 WebSphere Process Server 早期的版本中,申明人工任务方法是分两次调用,首先是查询数据库中的可用任务,其次是声明第一次查询返回的任务。这两种方法都是围绕着同步块的,这意味着每次只有一个线程可以执行这个代码,如图 1 所示。
图 1. 声明人工任务时的同步访问
申明任务的新方法
在 WebSphere Process Server V7 中,声明任务的方法是用一个查询表,并结合早期用于消除同步块需求的查询和声明方法。这提供了多线程并发访问数据库中的人工任务,如图 2 所示。
图 2. 声明人工任务时的查询表任务访问
在本文中,您将检查新方法同时使用同步方法和查询表方法,证明新方法确实如宣传的那样,不会引起某种形式的并发异常。
构建一个样例应用程序
为了证明新方法确实如前面所说的那样,您将构建一个样例应用程序,突出该功能所需的组件。应用程序不应该是一个已经实现的产品,而应该是一个说明使用查询表方法申明的样例。
假设您已经安装了 WebSphere Integration Developer V7(以下简称 Integration Developer)。您可以下载一个 项目交换文件,其中附有样例所需的所有代码,除了代码之外,还需要如下描述的附加软件:下载 WebSphere Integration Developer 查询表插件。当应用程序在服务器上运行时,使用 Apache JMeter 测试并发性。
应用程序将运行在 WebSphere Process Server V7 测试环境中,测试环境是 WebSphere Integration Developer V7 安装的一部分。当您安装了查询表插件之后,像 PA71 Getting Started 文档描述的那样,您可以查看查询表构件,它是项目交换的一部分。JMeter Test Project 也是项目交换的一部分,在本文后面在本地服务器上测试并发性时将会用到。
概述
当一个人工任务分配给一组潜在所有者时,例如,WebSphere Process Server 中的 Everyone 或一个 Group 工作项目,组内的多个成员试图同时声明一个任务。在之前的 WebSphere Process Server 版本中,消除并发异常的惟一方法是封装同步块中决定和声明任务的查询(或使用 Java™ 5 中的可重入锁)。同步方法有一些缺陷,由以下原因引起的: 同步块在工作项目上的员工查询完成之前执行。这就导致了访问任务时所有线程阻塞,不仅仅是访问任务和工作组成员的用户请求阻塞。同步块被限制在一个 JVM 上,请求被路由到集群中的另一个节点并引起接收节点中的并发异常,这种可能性仍然存在。
早期的申明任务方法
在 WebSphere Process Server 早期的版本中,申明人工任务方法是分两次调用,首先是查询数据库中的可用任务,其次是声明第一次查询返回的任务。这两种方法都是围绕着同步块的,这意味着每次只有一个线程可以执行这个代码,如图 1 所示。
图 1. 声明人工任务时的同步访问
申明任务的新方法
在 WebSphere Process Server V7 中,声明任务的方法是用一个查询表,并结合早期用于消除同步块需求的查询和声明方法。这提供了多线程并发访问数据库中的人工任务,如图 2 所示。
图 2. 声明人工任务时的查询表任务访问
在本文中,您将检查新方法同时使用同步方法和查询表方法,证明新方法确实如宣传的那样,不会引起某种形式的并发异常。
构建一个样例应用程序
为了证明新方法确实如前面所说的那样,您将构建一个样例应用程序,突出该功能所需的组件。应用程序不应该是一个已经实现的产品,而应该是一个说明使用查询表方法申明的样例。
假设您已经安装了 WebSphere Integration Developer V7(以下简称 Integration Developer)。您可以下载一个 项目交换文件,其中附有样例所需的所有代码,除了代码之外,还需要如下描述的附加软件:下载 WebSphere Integration Developer 查询表插件。当应用程序在服务器上运行时,使用 Apache JMeter 测试并发性。
应用程序将运行在 WebSphere Process Server V7 测试环境中,测试环境是 WebSphere Integration Developer V7 安装的一部分。当您安装了查询表插件之后,像 PA71 Getting Started 文档描述的那样,您可以查看查询表构件,它是项目交换的一部分。JMeter Test Project 也是项目交换的一部分,在本文后面在本地服务器上测试并发性时将会用到。
2010-09-08
浏览2260
下载16