Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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
在JavaEE和JavaSE环境之间重用persistence.xml_Java_Jpa_Junit_Openjpa_Persistence.xml - Fatal编程技术网

在JavaEE和JavaSE环境之间重用persistence.xml

在JavaEE和JavaSE环境之间重用persistence.xml,java,jpa,junit,openjpa,persistence.xml,Java,Jpa,Junit,Openjpa,Persistence.xml,我主要在WebSphere7.0下进行JPA开发,它使用OpenJPA作为其JPA提供者 我有以下persistence.xml文件: <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/pers

我主要在WebSphere7.0下进行JPA开发,它使用OpenJPA作为其JPA提供者

我有以下
persistence.xml
文件:

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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_2_0.xsd">
    <persistence-unit name="PU">
        <jta-data-source>jdbc/test</jta-data-source>
        ...
        ... Entities
        ...
    </persistence-unit>
</persistence>
。。。这意味着OpenJPA仍在尝试执行JNDI查找,即使我正在传递一个带有键的映射,指示它执行其他操作

还有其他人遇到过这种情况吗?通过传递OpenJPA属性来覆盖JNDI查找,是否可以在JavaSE环境中使用JNDI“enabled”
persistence.xml


(顺便说一句:我知道的是,在JavaSE下,
持久化单元的
事务类型
属性默认为
资源本地
,因此这不是我的问题的根源)

在持久性xml中不能有两个持久性单元,比如说基于JTA的PU和另一个单元,比如说资源本地的PUTest,在正常情况下使用PU,在junits中使用PUTest?我当然可以,但是我必须重复
持久性单元
元素的内容(类定义、对ORM文件的引用等),如果可能的话,我非常希望避免这种情况。如果您使用独立的JNDI提供程序(“oocjndi”就是其中之一),则FWIW JNDI在JavaSE中不必“毫无意义”@DataNucleus没有意识到这一点。有趣的替代方案。实际上,它可能会解决围绕在JavaSE环境中测试JavaEE代码的其他问题!但我预见到一个可能的问题,即您正在定义一个JTA数据源。
Caused by: <openjpa-2.0.2-SNAPSHOT-r422266:1389965 fatal user error>
org.apache.openjpa.util.InvalidStateException: Could not perform automatic lookup of EJB
container's javax.transaction.TransactionManager implementation. Please ensure that you
are running the application from within an EJB 1.1 compliant EJB container, and then set
the org.apache.openjpa.ManagedRuntime property to the appropriate value to obtain the
TransactionManager.