【发布时间】:2010-12-03 14:19:18
【问题描述】:
假设我有两个 EJB A 和 B:
public class A implements AInterface {
private B b;
...
//This method will NOT access database directly
public void a() {
//do something
b.b();
//do something
}
...
}
public class B implements BInterface {
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public void b() {
//Read database
}
}
- A.a() 不连接数据库,而是调用 B.b()
- B.b() 选择数据库
- A.a() 具有默认事务属性,在此容器中是必需的
对 A.a() 的调用会在事务中运行吗?事务是在输入 A.a() 时、输入 B.b() 时、访问数据库时还是其他时间启动的?
基线是我不希望它在事务中运行,所以我可以对 A.a() 使用 NOTSUPPORTED,我猜是 (?),但我也试图理解在不同的调用堆栈点中涉及或不涉及数据库如何影响事务。
【问题讨论】:
-
您使用什么框架来启用交易?春天?
-
只有 EJB3 和 Weblogic。但是如果它在不同的框架中表现不同,我也想了解一下:)
标签: java transactions jakarta-ee ejb-3.0