在 JBoss/WildFly 中注入 EntityManager

Posted

技术标签:

【中文标题】在 JBoss/WildFly 中注入 EntityManager【英文标题】:Injecting EntityManager in JBoss/WildFly 【发布时间】:2015-04-17 09:54:00 【问题描述】:

我正在学习 JPA、EJB 和 JBoss/WildFly。

我需要将EntityManager 注入我的应用程序。我正在尝试通过以下方式做到这一点:

@Stateless
@LocalBean
public class ProductsService implements IProductsService 

    @PersistenceContext(unitName = "myUnit")
    EntityManager entityManager;

//....

我的.war 存档中的META-INF 目录中有persistence.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="myUnit">
        <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> 
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

JNDI 数据源 (java:jboss/datasources/ExampleDS) 是全新 WildFly 安装中提供的默认数据源。

当我将应用程序部署到 WildFly 时,我收到以下错误:

JBAS011440: Can't find a persistence unit named myUnit in deployment "my-web-app.war".

我做错了什么?

【问题讨论】:

【参考方案1】:

persistence.xml 始终驻留在root-of-persistence-unit/META-INF/ directory 中。在战争文件中,您必须将persistence.xml 放在WEB-INF/classes/META-INF 中。

例如:

WEB-INF/classes/META-INF/persistence.xml
WEB-INF/web.xml

查看更多:Persistence Units

【讨论】:

以上是关于在 JBoss/WildFly 中注入 EntityManager的主要内容,如果未能解决你的问题,请参考以下文章

JBoss Wildfly 在 jboss-cli 命令行模式下显示属性值

Java EE 远程客户的访问EJB实现实例(Jboss wildfly)

在 jboss wildfly 应用程序上部署抛出警告

JBoss/Wildfly - 安全高效的日志过滤 - 多个处理程序记录到同一个文件

JBoss Wildfly JMS 客户端抛出服务器连接失败错误

如何让 JBoss/WildFly 在应用程序部署/初始化失败时自动终止?