我在 glassfish 中部署了一个战争文件。我们有一个 Singleton bean,其中有 1 个同步方法。
@TransactionAttribute (TransactionAttributeType.REQUIRED)
public synchronized void do()
{
...
}
但是,我注意到事务是在调用该方法之前启动的。在调用者获得 bean 类的监视器上的锁后,如何启动事务?
谢谢你。
更新:我们只是想拥有一个一次只能由一个线程调用的 bean 方法。在前一个线程完全完成之前,我们不希望任何其他线程调用此方法。我创建了另一个线程,在那里我有了使用单例 bean 的想法:无状态会话 bean 中的同步方法在 glassfish 中没有按预期工作
更新:做了一些阅读之后,似乎我可以创建自己的事务 UserTransaction。会支持吗?没关系。我收到此错误消息:
Only session beans with bean-managed transactions can obtain UserTransaction