gpt4 book ai didi

Java EE - 具有对同步方法的并发访问的单例 EJB

转载 作者:行者123 更新时间:2023-12-02 05:35:26 25 4
gpt4 key购买 nike

我有一个 EJB,如下所示。这只是为了测试目的而创建的 - 我正在“ sleep ”线程,因为我想模拟在同步方法完成执行之前再次调度查询的情况。

观察到的行为符合预期 - 但这是否是轮询数据库以查找已插入的行以便在更新之前可以执行某些处理的正确方法?我希望同步该方法,因为我不希望在处理先前方法调用的数据时再次调用来修改数据库状态

@Singleton
public class MyResource {

@PersistenceContext(unitName="MyMonitor")
private EntityManager em;

@Schedule(second="*", minute="*", hour="*")
public synchronized void checkDb() throws SQLException, InterruptedException {
List<ReferenceNames> l =
em.createQuery("from Clients cs", Clients.class).getResultList();
Thread.sleep(2000);
System.out.println(l.size());
}

}

最佳答案

您不应该自己实现单点数据库访问,只是为了确保记录在更新期间不会更改。为此,您需要使用数据库锁定。在 Java EE/JPA 2.0 中,您有多种锁定模式,例如 this Oracle blogthis wikibook article 。对于在锁定期间尝试写入的其他组件,您必须对锁定异常使用react并实现某种重试机制。

关于Java EE - 具有对同步方法的并发访问的单例 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012631/

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