gpt4 book ai didi

java - 从 EJB 记录事务的成功

转载 作者:行者123 更新时间:2023-11-30 09:34:33 24 4
gpt4 key购买 nike

我想记录参与事务的 EJB 方法的错误或成功。我应该把日志放在哪里?据我所知,事务将在我的 doSomething 完成后提交。所以在那种方法中我不能确定提交是否成功。这就提出了这个问题。

public class MyEjb {

@Inject
AnotherEjb anotherEjb;

@Inject
LoggerEjb logger;

public void doSomeThing() {
MyBean b = getSomething();
anotherEjb.persistSg(b);

/* logger.log is transaction if of attrubute NOT_SUPPORTED to
ensure separation from caller transaction */
logger.log("Did something successfully.");
}

}

public class AnotherEjb {

@Inject
EntitiyManager em;

public void persistSg(MyBean entity) {
em.persist(entity);
}
}

最佳答案

您是否尝试过 CDI 的事务观察器?

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

这段代码触发了一个事件:

@Inject Event<CategoryUpdate> categoryUpdateEvent;

public void someTransactionalMethod() {
CategoryUpdate categoryUpdate = new CategoryUpdate();
categoryUpdateEvent.fire(categoryUpdate);
}

这段代码观察到相同的事件,但只有在交易成功时才会被调用:

public void refreshCategoryTree(@Observes(during = AFTER_SUCCESS) CategoryUpdate event) {
......
}

关于java - 从 EJB 记录事务的成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com