jakarta-ee - jboss 是否为我处理托管实体管理器并发问题?

标签 jakarta-ee concurrency jboss jta

看来 jboss 管理和提供的实体管理器实例是绑定(bind)到持久性上下文的实际实现的代理。

此实际实现收集了 JTA 事务提供的隔离(每个事务上下文)。

这让我觉得在处理代理实例时我不需要担心并发问题。

如果我决定从 JNDI 查找而不是容器注入(inject)中获取该代理实例,也许我什至可以缓存它?

这样合理吗?

最佳答案

容器负责扫描@PersistenceContext注释并注入(inject)EntityManagers。它可以代理EntityManager的实例。

在 EJB 中,容器负责依赖注入(inject),您可以确保线程安全。持久化上下文将在同一事务中的多个组件之间共享。

但是,如果您在 Servlet 环境(需要考虑并发性)中使用 @PersistenceContext 注入(inject)此 EntityManager,则您不会线程安全。您应该使用 @PersistenceUnit 来代替。这部分可以引用JBoss 7 JPA Reference Guide :

Keep in mind that the entity manager is not expected to be thread safe (don't inject it into a servlet class variable which is visible to multiple threads).

前一段时间,我总结了我对 JTA 事务之间的持久性上下文共享和容器代理 EntityManagers 的了解,并将其发布 here 。我希望您会发现它很有用。

关于jakarta-ee - jboss 是否为我处理托管实体管理器并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603478/

相关文章:

jakarta-ee - Java EE 拦截器和@ViewScoped bean

ios - 为什么我的 NSManagedObject 在 [moc save] PerformBlockAndWait 之后没有保留?

c++ - 是什么保证弱松弛的无竞争 CAS 循环终止?

java - 浏览器停止加载后停止服务器线程

java - 将外部 JAR 添加到 Openshift

spring - Hibernate 并发多对多关系

java - 在 JBOSS 5.1.1 中获取部署异常

java - 从 Wildfly 发送 jms 消息

JBossWS 中的 Spring 配置

java - 在 liferay 的不同页面上显示导航菜单?