Jpa Glassfish 4.1.1/EAR/java.lang.IllegalStateException:无法检索unitName XYZ的EntityManagerFactory

Jpa Glassfish 4.1.1/EAR/java.lang.IllegalStateException:无法检索unitName XYZ的EntityManagerFactory,jpa,jakarta-ee,ear,glassfish-4.1,payara,Jpa,Jakarta Ee,Ear,Glassfish 4.1,Payara,我在Payara/Glassfish 4.1.1服务器上部署EAR项目时遇到了一个巨大的问题,这是我几天来一直无法解决的问题 希望有人能帮助我 我的设置-> 我有一个EJB/JPA eclipse项目“CommonPersistanceAndService”,它包含我的JPA实体、我的Databaseproducer和一些基本的ServiceClass 我有一个使用此EJB/JPA项目的webproject,因此我知道我的databaseproducer工作正常: @Singleton @Sta

我在Payara/Glassfish 4.1.1服务器上部署EAR项目时遇到了一个巨大的问题,这是我几天来一直无法解决的问题

希望有人能帮助我

我的设置-> 我有一个EJB/JPA eclipse项目“CommonPersistanceAndService”,它包含我的JPA实体、我的Databaseproducer和一些基本的ServiceClass

我有一个使用此EJB/JPA项目的webproject,因此我知道我的databaseproducer工作正常:

@Singleton
@Startup
public class DatenbankProducer implements Serializable{

    private static final long serialVersionUID = 2605227297803488033L;

    @PersistenceContext(unitName="XYZdb")
    EntityManager emXYZProd;

    @PersistenceContext(unitName="XYZtest")
    EntityManager emXYZTest;

    @Inject ApplicationConfig appConfig;
    @Inject Logger logger;

    public XYZDatenbankProducer() { }

    @Produces 
    @XYZDatenbank
    public EntityManager getEntityManager(){
        if(appConfig.isBetriebsmodusTest())
            return emXYZTest;
        return emXYZProd;
    }

    @PostConstruct
    public void initDBConnection(){

        Query q = getEntityManager().createNativeQuery("select * from zconnectiontest");
        q.getSingleResult();

        logger.info("=== Connection to Database established");
    }
}
现在,在EAR项目中使用相同的EJB/JPA项目以及一个只有一个带有调度器的serviceclass的项目“Batchjobs”

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
  <display-name>Batchjobs-EAR</display-name>
  <module>
    <ejb>Batchjobs.jar</ejb>
  </module>
  <module>
    <ejb>CommonPersistanceAndService.jar</ejb>
  </module>
</application>
当我调试程序时,emXYZTest的对象,EntityManagerRapper,没有注入EntityManagerFactory!?当我在我的Webproject中执行同样的操作时,有一个EntityManagerFactory。

所以问题是-为什么EntityManagerFactory没有被注入EAR部署中

到目前为止,我试过的都不管用。你知道是什么导致了这个问题吗

提前谢谢


Thomas

我刚刚检查了一下,您是否在将JAR放入Ext文件夹后重新启动了服务器,或者您是否创建了jndi?是的,我多次重新启动了服务器。正如我所写的,同样的坚持项目在战争中也能完美运作。所以i.m.h.o.这不可能是jndi/jdbc等配置的问题。
Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName XYZtest
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:171)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNativeQuery(EntityManagerWrapper.java:557)
    at com.isg.kis.application.XYZDatenbankProducer.initDBConnection(XYZDatenbankProducer.java:48)
    ... 122 more