问题描述
我正在学习JPA,EJB和JBoss / WildFly。我需要将 EntityManager
注入到我的应用。我试图按照以下方式执行:
@Stateless
@LocalBean
public class ProductsService实现IProductsService {
@PersistenceContext(unitName =myUnit)
EntityManager entityManager;
// ....
}
而我在 .war $ <目录中的
META-INF
目录中有 persistence.xml
c $ c> archive:
<?xml version =1.0encoding =UTF-8?>
< persistence xmlns =http://java.sun.com/xml/ns/persistenceversion =1.0>
< persistence-unit name =myUnit>
< jta-data-source> java:jboss / datasources / ExampleDS< / jta-data-source>
<属性>
< property name =hibernate.hbm2ddl.autovalue =create/>
< property name =hibernate.show_sqlvalue =true/>
< / properties>
< / persistence-unit>
< /余辉>
JNDI数据源( 当我将应用程序部署到WildFly时,出现以下错误: java:jboss / datasources / ExampleDS $
JBAS011440:在部署my-web-app.war中找不到名为myUnit的持久性单元。
我做错了什么?
persistence.xml
总是驻留在 {持久化根单元} / META-INF /目录中
。在war文件中,您必须在 WEB-INF / classes / META-INF
中放置 persistence.xml
。
例如:
WEB-INF / classes / META-INF /persistence.xml
WEB-INF / web.xml
更多信息:
I am learning JPA, EJB and JBoss/WildFly.
I need to inject an EntityManager
into my application. I am trying to do it in the following way:
@Stateless
@LocalBean
public class ProductsService implements IProductsService {
@PersistenceContext(unitName = "myUnit")
EntityManager entityManager;
//....
}
And I have persistence.xml
file in the META-INF
directory in my .war
archive:
<?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>
The JNDI data source (java:jboss/datasources/ExampleDS
) is the default data source that is provided in a clean WildFly installation.
When I deploy my application to WildFly I get the following error:
JBAS011440: Can't find a persistence unit named myUnit in deployment "my-web-app.war".
What am I doing wrong?
persistence.xml
always resides in {root-of-persistence-unit}/META-INF/ directory
. In a war file you must place the persistence.xml
in WEB-INF/classes/META-INF
.
Eg:
WEB-INF/classes/META-INF/persistence.xml
WEB-INF/web.xml
See more: Persistence Units
这篇关于在JBoss / WildFly中注入EntityManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!