如何在EJB 3中为每个方法设置隔离级别

问题描述 投票:3回答:1

是否可以为给定的EJB 3方法调用设置数据库隔离级别(即Serializable,repeatable-read等)?

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

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

database java-ee ejb-3.0 isolation-level
1个回答
1
投票

这确实不在规范中,但可以在支持时通过特定于应用程序服务器的部署描述符进行配置。例如,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是否具有等价物(我无法访问SupportWLDDInContainers页面以找到GlassFish的答案)。

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

© www.soinside.com 2019 - 2024. All rights reserved.