是否可以为给定的EJB 3方法调用设置数据库隔离级别(即Serializable,repeatable-read等)?
据我所知,这不是EJB规范所涵盖的,因此有关如何以JBoss或Glassfish特定方式执行此操作的详细信息将非常棒。
我开始觉得这是不可能的,并且你只能按连接池设置它,这显然不是一个理想的解决方案。
答案 0 :(得分: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)
,即使用编程方式配置隔离?