websphere - 向 JNDI 公开容器管理的 EntityManger/EntityManagerFactory/PersistenceContext
问题描述
正如标题所说,我想知道是否可以在部署在 Websphere Application Server 版本上的企业应用程序中通过 JNDI 查找容器管理的 EntityManger(或 EntityManagerFactory 或 PersistenceContext)。8.5 或 9.0 没有通过<persistence-context-ref>
/ <persistence-unit-ref>
in显式引用web.xml
。
我发现在 JBoss 中可以通过
<property name="jboss.entity.manager.factory.jndi.name" value="persistence-units/JpaPersistence"/>
中的条目persistence.xml
,但找不到与 Websphere 类似的内容。
解决方案
我相信 JPA 规范第 7.2.1 节包含您正在寻找的信息:
持久化上下文注入示例:
@PersistenceContext(name="persistence-units/JpaPersistence")
EntityManager em;
JNDI 查找示例:
@Stateless
@PersistenceContext(name="persistence-units/JpaPersistence")
public class MySessionBean implements MyInterface {
@Resource SessionContext ctx;
public void doSomething() {
EntityManager em = (EntityManager)ctx.lookup("persistence-units/JpaPersistence");
...
}
}
我建议让容器使用 @PersistenceContext 注入引用,而不是手动查找资源
推荐阅读
- profiling - 是否有一种简单的方法可以在运行时检测是否启用了 JRuby 分析?
- go - 无头 chromedp 等到下载完成
- javascript - 是否可以在使用 vuejs 的用户输入旁边创建一个带有 v-select 的搜索功能
- regex - 清漆 modsecurity 规则语法错误
- dompdf - Laravel Dompdf 两列布局
- c# - 更改 ItemDatabound 上数据列表内的链接按钮前景色
- java - 无法将 2020 年 4 月 15 日上午 12:14:17 的日期解析为 LocalDatetime
- hadoop - 在将模型部署到 AKS PipelineModel.load 时抛出 org.apache.hadoop.mapred.InvalidInputException
- spring - 我如何解决 Line xsi:schemalocation 中的这个错误
- pgbadger - pgbadger 在 Fedora 上没有找到任何查询