是否可以为给定的 EJB 3 方法调用设置数据库隔离级别(即可串行化、可重复读取等)?

据我所知,EJB 规范并未涵盖这一点,因此有关如何以 JBoss 或 Glassfish 特定方式执行此操作的详细信息将非常有用。

我开始觉得这是不可能的,你只能为每个连接池设置它,这显然不是一个理想的解决方案。

有帮助吗?

解决方案

这确实没有被规范涵盖,但可以在支持时通过应用程序服务器特定的部署描述符进行配置。例如,WebLogic 就是这样做的,您可以在方法级别指定事务隔离 weblogic-ejb-jar.xml:

例子

<transaction-isolation>
  <isolation-level>...</isolation-level>
  <method>
      <description>...</description>
      <ejb-name>...</ejb-name>
      <method-intf>...</method-intf>
      <method-name>...</method-name>
      <method-params>...</method-params>
  </method>
</transaction-isolation>

我不知道 JBoss 或 GlassFish 是否有等效的(我无法访问 支持WLDDInContainers 页面查找 GlassFish 的答案)。

作为替代方案,您是否尝试使用 Connection#setTransactionIsolation(int) 在给定的 EJB 方法中使用 i.e.以编程方式配置隔离?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top