【问题标题】:Java EE Wildfly retrieve EntityManager from JNDI without persistence.xmlJava EE Wildfly 从 JNDI 检索 EntityManager 而不使用 persistence.xml
【发布时间】:2016-06-24 04:33:05
【问题描述】:

我最近迁移到 Java EE (Wildfly),我想从 JNDI 查找 EntityManager。目前,我在我的standalone.xml 中定义了一个数据源,并通过 JNDI 成功地检索了它,但这只为我提供了数据源而不是实体管理器。

我知道我可以创建一个persistence.xml 并使用@PersistenceContext,但我确实在寻找一种方法来避免JNDI 名称的编译时知识,因此我希望根据运行时信息执行查找以检索适当的实体管理器。

【问题讨论】:

    标签: jpa jakarta-ee jndi entitymanager wildfly-10


    【解决方案1】:

    不幸的是,如果不使用persistence.xml 文件,则无法以可移植的方式定义派生实体管理器的持久性单元。

    如果这对您很重要,请考虑为JPA_SPEC-114 投票并在此处另外发表评论。

    您可以或多或少地使用resource-ref 使持久性单元独立于最终的JNDI 名称。资源引用确实会导致您的代码依赖于特定于容器的机制来切换 resource-ref 指向的内容。

    不幸的是,另一种选择是使用switchable data source 方法。然后,您可以使用固定的 JNDI 名称定义数据源并从 persistence.xml 文件中引用该名称,然后使用可切换数据源在内部使用的任何方法转到实际数据源。这可以是直接的数据源实现(如链接中所示),也可以是从 JNDI 获取另一个数据源(它有效地完成了 resource-ref 的工作,但随后使用您自己的机制进行切换)

    【讨论】:

    • 谢谢,这就是我的研究和尝试让我相信我只是希望有人有一些神奇的方法来解决它:) - 我也许可以利用资源引用来允许一些间接。
    猜你喜欢
    • 2019-03-01
    • 2020-05-13
    • 2019-12-31
    • 2013-10-26
    • 2015-05-16
    • 2012-03-10
    • 1970-01-01
    • 2021-04-30
    • 2012-12-09
    相关资源
    最近更新 更多