Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单元测试中找到JPA实体,而不是在EJB中_Java_Jpa_Ejb_Eclipselink - Fatal编程技术网

Java 在单元测试中找到JPA实体,而不是在EJB中

Java 在单元测试中找到JPA实体,而不是在EJB中,java,jpa,ejb,eclipselink,Java,Jpa,Ejb,Eclipselink,我有一个DAO,它将JPA与非JTA数据源和资源_本地事务一起使用。我的所有单元测试都是从数据库中插入和检索DAO数据 但是,当我将EJB部署到Weblogic 10.3.3服务器时,会出现以下异常: Caused by: java.lang.IllegalArgumentException: Unknown entity bean class: class com.foo.bar.CatalogEntity, please verify that this class has been mar

我有一个DAO,它将JPA与非JTA数据源和资源_本地事务一起使用。我的所有单元测试都是从数据库中插入和检索DAO数据

但是,当我将EJB部署到Weblogic 10.3.3服务器时,会出现以下异常:

Caused by: java.lang.IllegalArgumentException: Unknown entity bean class: class com.foo.bar.CatalogEntity, please verify that this class has been marked with the @Entity annotation.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:576)
WEB-INF/classes/META-INF中的My persistence.xml:

<?xml version="1.0" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="cmf-awe-service" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>MyDataSource</non-jta-data-source>
        <class>com.foo.bar.CatalogEntity</class>
        <properties>
            <property name="eclipselink.cache.shared.default" value="false"/>
            <property name="eclipselink.query-results-cache" value="false"/>
            <property name="eclipselink.target-server" value="WebLogic_10" />
            <property name="eclipselink.logging.level" value="FINEST" />
        </properties>
    </persistence-unit>
</persistence>

我已经确认CatalogEntity类位于WEB-INF/classes目录中。关于为什么这在单元测试中有效,但在部署到应用服务器时无效,你有什么想法吗?

Brian,我也有同样的问题。。。我通过在我的bean上添加一个PreDestroy方法来解决这个问题,该方法关闭了EntityManagerFactory:

@PreDestroy
public void close()
{
    emf.close();
}

我希望这能帮助你!请投票表决它是否有效…

您如何将ejb部署到WebLogic?您是否有可能使用与应用服务器中使用的不同的JPA实现进行测试?@Kal我正在使用WebLogic.Deployer java类进行部署。@Brian,如果您有ejb,为什么您的persistence.xml在WEB-INF/classes/META-INF中?它不能放在ejbjar本身吗?@Brian-我的问题不是很清楚。ejb是作为ear的一部分部署的,还是它本身就是一个jar?如果是,那么persistence.xml应该在ejb jar中。