配置事务
事务配置概述
管理控制台提供了用于配置 WebLogic Server 功能(包括 WebLogic JTA)的界面。该配置过程包括为各种特性指定值。这些特性定义事务环境,其中包括下列内容:
您还应该熟悉可以参与事务的各种 J2EE 组件(如 EJB、JDBC 数据源和 JMS)的管理。
注意: | 您还可以使用 WebLogic 脚本工具(WLST,请参阅 WebLogic 脚本工具)或 JMX(请参阅使用 JMX 开发自定义管理实用工具)来配置与事务相关的设置。 |
配置 JTA
配置了 WebLogic JTA 以及任何事务参与内容之后,系统就可以使用 JTA API 和 WebLogic JTA 扩展管理事务了。请注意下列事项:
-
JTA(事务)的配置设置可在域级别应用。这就意味着配置特性设置将应用于域中的所有服务器。请参阅“管理控制台联机帮助”中的配置 JTA。 -
JTA 的监视任务是在服务器级别执行的。请参阅“管理控制台联机帮助”中的监视 JTA。 -
参与资源(如 JDBC 数据源)的配置设置是基于每个配置的对象的。这些设置应有于特定对象的所有实例。请参阅“配置和管理 WebLogic JDBC”中的事务选项和“管理控制台联机帮助”中的为 JDBC 数据源配置全局事务选项。
取消注册资源宽限期
如果您的资源偶尔会取消部署然后再重新部署(如与应用程序一起打包的 JDBC 数据源模块),则可以通过为该域设置“取消注册资源宽限期”,将因为取消注册的资源而导致放弃事务的危险降到最小。该宽限期指的是事务管理器在取消注册资源之前等待事务完成的秒数。
在指定的宽限期中,在 unregisterResource 调用可以返回前将进行阻塞,不会为相关资源启动新事务。如果资源的未处理事务数变为 0,unregisterResource 调用将立即返回。
宽限期结束时,如果仍有与该资源相关的未处理事务,unregisterResource 调用将返回,并在该资源以前注册的服务器上写入日志消息。
管理事务的其他特性
默认情况下,如果参与全局事务的 XA 资源无法响应来自 WebLogic Server 事务管理器的 XA 调用,WebLogic Server 则会将该资源标记为不正常且不可用,并且会阻塞对于该资源的任何进一步调用,以保留资源线程。这种失败可能是由不正常的事务或者不正常的资源造成的 – 两种原因之间没有区别。在这两种情况下,资源都会标记为不正常。
为了减轻此限制,WebLogic Server 提供了表 3-1 中列出的配置特性:
true ,则启用资源运行状况监视。如果 XA 资源在
MaxXACallMillis 特性指定的时间段内无法响应 XA 调用,WebLogic Server 则会将该数据源标记为不正常,并且阻塞对于该资源的任何进一步调用。
| ||
当域不活动时可以直接在 config.xml
文件中设置这些特性(但 JDBC 数据源的“资源运行状况监视”除外)。这些特性在管理控制台中不可用。下面的示例显示了具有这些特性的配置文件节选:
...
<JTA
MaxUniqueNameStatistics="5"
TimeoutSeconds="300"
RecoveryThresholdMillis="150000"
MaxResourceUnavailableMillis="900000"
MaxResourceRequestOnServer="60"
MaxXACallMillis="180000"
/>
为域间事务配置域
为了使得事务管理器可以管理分布式事务,该事务管理器必须能够与所有参与资源进行通信以准备事务,然后提交或回滚事务。这适用于 WebLogic 域充当分布式事务中的事务管理器或者事务参与方(资源)的情况。下列部分描述了如何对域进行配置以启用域间事务。要了解 WebLogic 域之间互操作性的详细信息,请参阅“确保 WebLogic Server 安全”中的启用 WebLogic Server 域之间的信任。
-
域间事务的限制 -
WebLogic Server 9.x、8.x 和 7.x 域的域间事务 -
设置安全互操作性模式
域间事务的限制
注意: | BEA 建议您在全局事务中使用 XA 驱动程序而不要使用非 XA 驱动程序(具有“仿真两阶段提交”)。在全局事务中使用非 XA 驱动程序有一些风险。请参阅“配置和管理 WebLogic JDBC”中的使用非 XA 驱动程序仿真两阶段提交时的限制和风险。 |
WebLogic Server 域的域间事务
要管理或参与跨越多个 WebLogic Server 域(即,所有参与域基于 WebLogic Server 9.x、8.x、7.x 和 6.x 域运行,或基于 9.x、8.x、7.x 和 6.x 的组合运行)的事务,必须通过建立域信任并设置Security Interoperability Mode
启用域间事务。对于所有参与域:
-
在所有 WebLogic Server 6.x 参与域中,在管理控制台的“安全”“用户”选项卡上将所有参与域的
system
用户的密码更改为相同的值。请参阅 Changing the System Password。 -
将所有参与域中所有域的安全凭据设置为相同的值,从而建立域信任。如果您具有 6.x 参与域,则请将所有域的安全凭据设置为与所有 WebLogic Server 6.x 参与域中的system
密码相同的值。-
对于 7.x 域,请参阅“Managing WebLogic Security”中的 Enabling Trust Between WebLogic Domains。 -
对于 8.x 域,请参阅“Managing WebLogic Security”中的 Enabling Trust Between WebLogic Domains。 -
对于 9.x 域,请参阅“Administration Console Online Help”中的 启用域之间的信任关系。
-
-
对于参与事务的每个服务器,请在重新引导之前,根据表 3-2 设置Security Interoperability Mode
标志。请参阅设置安全互操作性模式。
设置安全互操作性模式
Security Interoperability Mode
使您能够在全局事务中的服务器之间配置兼容的通信通道。
配置安全互操作性模式
每个参与服务器都必须将Security Interoperability Mode
参数设置为相同的值:
-
对于 Weblogic Server 9.x 域中的服务器,请参阅为 XA 事务配置安全模式。 -
对于 WebLogic Server 8.x 域中的服务器,请参阅 Using Security Interoperability Mode。 -
对于 WebLogic Server 7.x 域中的服务器,请参阅 Using Security Interoperability Mode。
确定安全互操作性模式设置
使用下表确定为域间事务配置通信通道时所需的Security Interoperability Mode
设置。
注意: | 如果“安全互操作性模式”设置为性能时,则不需要设置域之间的域信任。 |
事务日志文件
每个服务器都具有一个事务日志,其中存储着服务器协调的、可能尚未完成的已提交事务的相关信息。WebLogic Server 从系统崩溃或网络失败恢复时使用该事务日志。您不能直接查看事务日志 – 记录的格式为二进制,存储在服务器的默认持久性存储中。
为了利用群集中服务器的事务恢复服务的迁移功能,您必须将事务日志存储在可用于服务器及其备份服务器的位置,最好存储在双端口 SCSI 磁盘或存储区域网络(Storage Area Network,简称 SAN)中。有关详细信息,请参阅设置默认持久性存储的路径。
如果默认存储保存事务日志记录的文件系统空间不足或不可访问,commit
() 则会引发 SystemException
,事务管理器会在系统错误日志中放入一条消息。在提供更多空间之前不会提交任何事务。
设置默认持久性存储的路径
每个服务器实例(包括管理服务器)都有默认持久性存储,这是一种基于文件的存储,可用于无需明确选择特定存储并且通过使用系统默认存储机制会发挥最高性能的子系统。事务管理器使用默认持久性存储来存储事务日志记录。在许多情况下,默认持久性存储无需任何配置。然而,要启用事务恢复服务的迁移,必须对默认持久性存储进行配置,使其将其数据文件存储在持久性存储解决方案(如果原始服务器出现故障,可用于群集中的其他服务器)中。
有关说明,请参阅“管理控制台联机帮助”中的配置事务恢复服务迁移的默认持久性存储。
设置默认持久性存储同步写入策略
WebLogic Server 使用默认持久性存储来存储事务日志记录。您可以为默认存储选择写入策略,以更改 WebLogic Server 向磁盘写入记录的方式。您可以选择下列选项之一:
在 Windows 上,直接写入事务日志文件写入策略可能会将事务数据保留在磁盘上缓存中,而不直接写入磁盘。这对于事务而言并不安全,因为电源故障可能导致丢失磁盘缓存中的数据。为了防止在 Windows 上使用直接写入事务日志文件写入策略时缓存数据丢失,请禁用磁盘的所有写入缓存(默认情况下为启用状态),或者对于系统使用电池备用。
有关说明,请参阅“管理控制台联机帮助”中的配置事务恢复服务迁移的默认持久性存储。