是否可以为给定的 EJB 3 方法调用设置数据库隔离级别(即可序列化、可重复读取等)?
我知道这不在 EJB 规范中,因此如何在 JBoss 或 Glassfish 特定方式上执行此操作的详细信息会很棒。
我开始觉得这是不可能的,你只能为每个连接池设置它,这显然不是一个理想的解决方案。
是否可以为给定的 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 是否有等价物(我无法访问SupportWLDDInContainers页面以找到 GlassFish 的答案)。
作为替代方案,您是否尝试Connection#setTransactionIsolation(int)
在给定的 EJB 方法中使用,即以编程方式配置隔离?