【发布时间】:2021-04-30 14:04:24
【问题描述】:
什么是正确的 JNDI 字符串来查找显示在 JBoss 6 Startup here 上的这个持久性单元 JPA-DB:
10:26:09,847 INFO [PersistenceUnitDeployment] Starting persistence unit persistence.unit:unitName=tpar.ear/tpar-jboss-ejb3.jar#JPA-DB
10:26:09,847 INFO [Ejb3Configuration] Processing PersistenceUnitInfo [
name: JPA-DB
...]
10:26:09,847 WARN [Ejb3Configuration] Persistence provider caller does not implement the EJB3 spec correctly.PersistenceUnitInfo.getNewTempClassLoader() is null.
...
...
10:26:10,950 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
10:26:10,950 INFO [NamingHelper] Creating subcontext: persistence.unit:unitName=tpar.ear
10:26:10,950 INFO [SessionFactoryObjectFactory] Bound factory to JNDI name: persistence.unit:unitName=tpar.ear/tpar-jboss-ejb3.jar#JPA-DB
10:26:10,950 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
我已经尝试了以下以及我现在不记得的其他各种方法,它们都抛出了 NameNotFoundException:
entityManager = (EntityManager) jndi.lookup("java:/EntityManagers/JPA-DB");
entityManager = (EntityManager) jndi.lookup("java:comp/EntityManagers/JPA-DB");
entityManager = (EntityManager) jndi.lookup("java:comp/env/JPA-DB");
entityManager = (EntityManager) jndi.lookup("JPA-DB");
【问题讨论】:
-
也许this 会有所帮助。
-
尝试添加
<property name="jboss.entity.manager.jndi.name" value="java:/jpaEntity"/>和<property name="jboss.entity.manager.factory.jndi.name" value="java:/jpaEntityFactory"/>并同时使用JPA-DB和java:/jpaEntity进行查找,但没有成功。我必须使用的完整 JNDI 字符串是什么?人们在线程中使用注解,我不能使用它,因为我需要注入的类不是由 CDI 管理的。
标签: java hibernate jpa jboss jndi