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

时间:2016-12-27 13:35:15

标签: jpa java-ee ear glassfish-4.1 payara

我在Payara / Glassfish 4.1.1服务器上部署EAR项目存在很大问题,我几天都无法解决这个问题。

希望有人可以帮助我!

我的设置 - > 我有一个EJB / JPA eclipse项目" CommonPersistanceAndService"它包含我的JPA实体,我的Databaseproducer和一些基本服务类。

我有一个使用此EJB / JPA项目的webproject,所以我知道我的数据库生成器正常工作:

@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项目" 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>

我还将所有jar文件依赖项从我的EJB / JPA项目复制到EAR / lib目录。 EAR正确部署,但是当调度程序调用服务时,我收到以下错误:

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

当我调试程序时,emXYZTest的对象,一个EntityManagerWrapper,没有注入一个EntityManagerFactory!?当我在我的Webproject中执行相同操作时,会有一个EntityManagerFactory。 enter image description here

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

到目前为止我没有尝试过任何工作。是什么原因导致了这个问题?

提前致谢

托马斯

0 个答案:

没有答案