我如何获得事务事件(提交,回滚)



创建了一个基于CMT的EJB。EJB将一条记录插入到数据库中,然后异步执行另一个代码(a)。ejb继续它的处理,以便在异步调用之后提交或回滚事务。在代码(A)中,我需要等待EJB的事务提交或回滚。然后读取EJB插入的记录或跳过下一次执行。我的问题是,我可以通知EJB的事务事件,或者必须轮询,直到我可以读取记录。

我正在研究IBM WebSphere 7.0 (Java EE 5)

据我所知,将异步调用的代码与事务事件同步的唯一方法是使用CDI事件。在事务内部运行的代码中,您必须发送CDI事件。您可以将CDI事件的处理程序配置为仅在某些事务结果上运行——这些处理程序称为事务观察者。

我从JBoss文档中找到了这个页面,它概述了语法和一般概念——参见第11.7节

http://docs.jboss.org/weld/reference/latest/en-US/html/events.html

基本上是这样的

public void refreshCategoryTree(@Observes(during = AFTER_SUCCESS) CategoryUpdateEvent event) 
{// only called after the transaction committed successfully }

我不知道WebSphere,但由于这是CDI规范的一部分,我认为它也应该在那里工作。我曾经在JBoss中使用过这个,它对我很有效。如果你愿意,你甚至可以让处理程序在它自己的事务中运行。

最新更新