在 EAServer 中,可实现一个在多个数据库上执行操作的组件。您可为此组件指派事务属性来定义它参与事务的方式。事务属性可具有以下值:
不支持 组件的方法永远不会作为事务的一部分来执行。如果组件是由另一个在事务中执行的组件激活的,则新实例的工作将在现有事务之外执行。这是缺省设置。
支持事务 组件可在事务的上下文中执行,但是在执行该组件的方法时不需要连接。如果组件是直接由基础客户端实例化的,EAServer 不会开始事务。如果组件 A 是由组件 B 实例化的,而组件 B 正在一个事务中执行,则组件 A 会在同一事务中执行。
需要事务 组件总是在事务中执行。当组件由基础客户端直接实例化时,将开始新的事务。如果组件 A 是由组件 B 激活的,而组件 B 正在一个事务中执行,则组件 A 会在同一事务中执行;如果组件 B 不是在事务中执行的,则组件 A 会在一个新事务中执行。
需要新事务 每当组件实例化时,都开始一个新的事务。如果组件 A 是由组件 B 激活的,而组件 B 正在一个事务中执行,则组件 A 将开始一个不受事务 B 的事务结果影响的新事务;如果组件 B 不是在事务中执行的,则组件 A 将在一个新事务中执行。
例如,在 Sybase Virtual University 示例应用程序(EAServer 中附带的 SVU 包)中,SVUEnrollment 组件的 enroll 方法执行两种不同的操作(预定课程座位,向学生收取课程费)。需要将这两种操作视为一个事务。
Microsoft Transaction Server 提供相同的属性值集。
在 Jaguar Manager 中找到该组件。
要找到 Jaguar 示例应用程序中的 SVUEnrollment 组件,请连接到 Jaguar 服务器,打开 [Packages] 文件夹,然后打开 SVU 程序包。该程序包中的组件列于右窗格中。
设置组件的事务属性。
右击该组件,然后选择 [Component Properties]。单击 [Transaction] 选项卡,从列表中选择事务属性值。单击 [OK] 完成操作。
SVUEnrollment 组件已经标上了 [Requires Transaction] 标记。
设置了组件事务特性后,即可从该组件执行 SQL Anywhere 数据库操作,并可确保事务在您指定的级别进行处理。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |