Seam将请求包装到(JTA)事务中

时间:2010-12-15 12:21:15

标签: java-ee seam ejb

根据我的理解,Seam将每个请求包装到一个Transaction中。我的Web应用程序(代码进入一些联合有状态bean)目前正在调用一些EJB接口,它是应用程序服务器的一部分,它还提供桌面客户端(一个完整的服务器应用程序,提供我的Web应用程序所需的所有功能)。

现在,接缝bean的后续调用到那些ejb方法由Seam容器包装到它自己的事务中,谢谢,但是之间没有“刷新”,这意味着实体管理器不会更新到我的最新状态后续电话的数据。

我通过简单地在ejb类中添加一些方法来解决这个问题,这些类本身创建了一个新的Transaction(在执行结束时强制执行'flush')。如果步骤出错,我很高兴不回滚所有内容。 我无法在任何地方找到如何配置Seam将EACH ejb调用的执行包装到事务中而不是包装WHOLE请求执行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好吧,Seam将每个请求包装到两个事务中(JSF渲染响应的额外只读事务)。您可以通过disabling Seam的事务管理来禁用此行为,但这会为所有类型的延迟初始化异常打开门...

在我遇到此问题的(罕见)情况下,我通常在EntityManager上执行手动刷新/刷新。在大多数情况下,不同方法操纵的数据应按其性质分开,但