事务配置概述

本文介绍WebLogic Server中事务配置的任务,包括JTA配置、域间事务配置及事务日志文件等关键内容。针对不同版本的WebLogic Server,文章详细解释了如何设置安全互操作性模式以实现跨域事务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置事务

下列部分提供了与事务相关的配置任务:

 


事务配置概述

管理控制台提供了用于配置 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 中列出的配置特性:

表 3-1 XA 资源运行状况监视配置特性
特性
MBean
定义
ResourceHealthMonitoring
JDBCXAParamsBean MBean 中的 ResourcehealthMonitoring 特性
启用或禁用 JDBC 数据源的资源运行状况监视。此特性仅适用于对于数据库连接使用 XA JDBC 驱动程序的数据源。如果使用非 XA JDBC 驱动程序,该特性则会被忽略。
如果设置为 true,则启用资源运行状况监视。如果 XA 资源在 MaxXACallMillis 特性指定的时间段内无法响应 XA 调用,WebLogic Server 则会将该数据源标记为不正常,并且阻塞对于该资源的任何进一步调用。
如果设置为 false,该功能则禁用。
默认值: true
您可以在管理控制台的 JDBC 数据源: 配置: 连接缓冲池选项卡中为 JDBC 数据源设置“资源运行状况监视”特性。
MaxXACallMillis
设置对于 XA 资源的 XA 调用的最长允许持续时间(毫秒)。此设置应用于整个域。
默认值: 120000
MaxResourceUnavailableMillis
XA 资源标记为不正常的最长持续时间(毫秒)。在此持续时间之后,会声明该 XA 资源重新可用,即使未使用事务管理器明确重新注册该资源也是如此。此设置应用于整个域。
默认值: 1800000
MaxResourceRequestOnServer
域中每个服务器所允许的最大并发资源请求数。
默认值: 50
最小值: 10
最大值: java.lang.Integer.MAX_VALUE

 

当域不活动时可以直接在 config.xml 文件中设置这些特性(但 JDBC 数据源的“资源运行状况监视”除外)。这些特性在管理控制台中不可用。下面的示例显示了具有这些特性的配置文件节选:

...

   <JTA
    MaxUniqueNameStatistics="5"
    TimeoutSeconds="300"
    RecoveryThresholdMillis="150000"
    MaxResourceUnavailableMillis="900000"
    MaxResourceRequestOnServer="60"
    MaxXACallMillis="180000"
   />

 


为域间事务配置域

为了使得事务管理器可以管理分布式事务,该事务管理器必须能够与所有参与资源进行通信以准备事务,然后提交或回滚事务。这适用于 WebLogic 域充当分布式事务中的事务管理器或者事务参与方(资源)的情况。下列部分描述了如何对域进行配置以启用域间事务。要了解 WebLogic 域之间互操作性的详细信息,请参阅“确保 WebLogic Server 安全”中的启用 WebLogic Server 域之间的信任

下列部分提供了有关如何为域间事务配置域的信息:

域间事务的限制

请注意域间事务的下列限制:

  • 不能手工解决 WebLogic Server 7.0 或更早版本的 WebLogic Server 域中资源上的未完成事务。
  • 域和所有参与资源必须具有唯一名称。即,JDBC 数据源、服务器或域不能与其他域或该域中的对象具有相同名称。
  • 只有同时具有下列两个特性条件的数据源可以参与全局事务,而不管在其中配置该数据源的域是什么:
    • 选择了“记录上一个资源”或“仿真两阶段提交”。
    • 该数据源使用非 XA 驱动程序创建数据库连接。

注意: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启用域间事务。对于所有参与域:

  1. 在所有 WebLogic Server 6.x 参与域中,在管理控制台的“安全”箭头符号“用户”选项卡上将所有参与域的 system 用户的密码更改为相同的值。请参阅 Changing the System Password
  2. 将所有参与域中所有域的安全凭据设置为相同的值,从而建立域信任。如果您具有 6.x 参与域,则请将所有域的安全凭据设置为与所有 WebLogic Server 6.x 参与域中的 system 密码相同的值。
  3. 对于参与事务的每个服务器,请在重新引导之前,根据表 3-2 设置Security Interoperability Mode标志。请参阅设置安全互操作性模式

设置安全互操作性模式

Security Interoperability Mode使您能够在全局事务中的服务器之间配置兼容的通信通道。

配置安全互操作性模式

每个参与服务器都必须将Security Interoperability Mode参数设置为相同的值:

有效值是:

  • 默认 - 如果启用了管理通道,事务协调器则通过它以内核身份进行调用,否则将以匿名身份进行调用。如果未启用管理通道,则可能发生中间人攻击。
  • 性能 – 事务协调器总是使用匿名身份进行调用。这意味着存在安全风险,因为恶意第三方可能会尝试使用中间人攻击影响事务的结果。
  • 兼容 – 事务协调器通过非安全通道以内核身份进行调用。这是一个较高的安全风险,因为成功的中间人攻击会使攻击者获取对两个域的管理控制。此设置应该仅在强网络安全就位时使用。

要为参与服务器配置安全互操作性模式,请参阅:

确定安全互操作性模式设置

使用下表确定为域间事务配置通信通道时所需的Security Interoperability Mode设置。

表 3-2 域间事务的安全互操作性设置
9.x
8.1 SP5 和更高版本
7.0 SP7 和更高版本
8.1 SP4 和更低版本
7.0 SP6 和更低版本
6.x
9.x
将两个域均设置为默认或性能
将两个域均设置为性能
将两个域均设置为性能
将 9.x 域设置为兼容
将 9.x 域设置为兼容
将 9.x 域设置为兼容
8.1 SP5 和更高版本
将两个域均设置为性能
将两个域均设置为性能
将两个域均设置为性能
将 8.1 SP5 和更高版本的域设置为兼容
将 8.1 SP5 和更高版本的域设置为兼容
将 8.1 SP5 和更高版本的域设置为兼容
7.0 SP7 和更高版本
将两个域均设置为性能
将两个域均设置为性能
将两个域均设置为性能
将 7.0 SP7 和更高版本的域设置为兼容
将 7.0 SP7 和更高版本的域设置为兼容
将 7.0 SP7 和更高版本的域设置为兼容
8.1 SP4 和更低版本
将 9.x 域设置为兼容
将 8.1 SP5 和更高版本的域设置为兼容
将 7.0 SP7 和更高版本的域设置为兼容
N/A
N/A
N/A
7.0 SP6 和更低版本
将 9.x 域设置为兼容
将 8.1 SP5 和更高版本的域设置为兼容
将 7.0 SP7 和更高版本的域设置为兼容
N/A
N/A
N/A
6.x
将 9.x 域设置为兼容
将 8.1 SP5 和更高版本的域设置为兼容
将 7.0 SP7 和更高版本的域设置为兼容
N/A
N/A
N/A

 

注意:如果“安全互操作性模式”设置为性能时,则不需要设置域之间的域信任。

 


事务日志文件

每个服务器都具有一个事务日志,其中存储着服务器协调的、可能尚未完成的已提交事务的相关信息。WebLogic Server 从系统崩溃或网络失败恢复时使用该事务日志。您不能直接查看事务日志 – 记录的格式为二进制,存储在服务器的默认持久性存储中。

为了利用群集中服务器的事务恢复服务的迁移功能,您必须将事务日志存储在可用于服务器及其备份服务器的位置,最好存储在双端口 SCSI 磁盘或存储区域网络(Storage Area Network,简称 SAN)中。有关详细信息,请参阅设置默认持久性存储的路径

如果默认存储保存事务日志记录的文件系统空间不足或不可访问,commit() 则会引发 SystemException,事务管理器会在系统错误日志中放入一条消息。在提供更多空间之前不会提交任何事务。

设置默认持久性存储的路径

每个服务器实例(包括管理服务器)都有默认持久性存储,这是一种基于文件的存储,可用于无需明确选择特定存储并且通过使用系统默认存储机制会发挥最高性能的子系统。事务管理器使用默认持久性存储来存储事务日志记录。在许多情况下,默认持久性存储无需任何配置。然而,要启用事务恢复服务的迁移,必须对默认持久性存储进行配置,使其将其数据文件存储在持久性存储解决方案(如果原始服务器出现故障,可用于群集中的其他服务器)中。

有关说明,请参阅“管理控制台联机帮助”中的配置事务恢复服务迁移的默认持久性存储

设置默认持久性存储同步写入策略

WebLogic Server 使用默认持久性存储来存储事务日志记录。您可以为默认存储选择写入策略,以更改 WebLogic Server 向磁盘写入记录的方式。您可以选择下列选项之一:

  • 缓存刷新 – 每次向存储写入条目之后都刷新操作系统和磁盘缓存。提交记录写入稳定存储之前,不能提交事务。
  • 已禁用 – 事务的写入缓存到内存后该事务立即完成,而不等待写入成功到达磁盘。此策略的速度最快,但对于事务而言并不安全。停电或操作系统失败可能会导致条目丢失或重复。
    警告:“已禁用”的同步写入策略对于事务而言不安全。如果应用程序使用全局事务,则请不要选择此选项。
  • 直接写入 – 每次写入时都强制操作系统直接写入磁盘。此选项在 Windows、Solaris 和 HP-UX 平台上可用。

在 Windows 上,直接写入事务日志文件写入策略可能会将事务数据保留在磁盘上缓存中,而不直接写入磁盘。这对于事务而言并不安全,因为电源故障可能导致丢失磁盘缓存中的数据。为了防止在 Windows 上使用直接写入事务日志文件写入策略时缓存数据丢失,请禁用磁盘的所有写入缓存(默认情况下为启用状态),或者对于系统使用电池备用。

有关说明,请参阅“管理控制台联机帮助”中的配置事务恢复服务迁移的默认持久性存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值