在互联网上,我经常找到关于这个主题的最新但相反的信息......因此我想问一个关于最低要求的问题。
我的目标是对简单的 EJB 3.1 应用程序做一个非常简单的集成测试:
- EclipseLink 的简单 JPA 2.0 功能
- Arquillian 和 JUnit 进行测试
- 马文
- Derby DB(在内存或 ./target 中的文件中),JTA 持久性上下文。
- 在 Arquillian 中嵌入 Glassfish
所以我只想做一个简单的JPA测试。我让我的 Glassfish 在 Arquillian 中运行,但是在执行 JPA 工作时,我的应用程序总是无法处理 Derby DB(告诉我没有表等),但 DDL 文件看起来很正常。我尝试在我的 persistence.xml 中提供模式名称、用户等,但没有任何帮助。有时,一个偶然的帖子告诉我在一个最小的 domain.xml 中为嵌入式 Glassfish 进行更改以匹配我的 persistence.xml 或适应 arquillian.xml。
我的问题是:对于这种最小的方法 - 我真的需要 src/test/glassfish/domains/domain1/domain.xml 或 arquillian.xml 吗?
我很确定前一段时间我设法使用 Embedded Glassfish 做到了这一点,但使用 Hibernate 4 作为 JPA 提供程序。我无法再访问该项目,因此无法区分,除非我明确没有添加 domain.xml 等。像(此处的其他问题)这样的帖子确实让我感到困惑。
重要的是我使用的不是托管服务器,而是嵌入式服务器。
谢谢和欢呼,蒂莫
这是我的版本之一,请参阅我的以下评论。
<persistence-unit name="localiser-core" transaction-type="JTA">
<jta-data-source>jdbc/__default</jta-data-source>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:memory:test;create=true" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.target-database" value="Derby"/>
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.application-location" value="target" />
<property name="eclipselink.create-ddl-jdbc-file-name" value="create.sql"/>
<property name="eclipselink.drop-ddl-jdbc-file-name" value="drop.sql"/>
<property name="eclipselink.debug" value="ALL"/>
<property name="eclipselink.weaving" value="static"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.logging.level.sql" value="FINEST"/>
<property name="eclipselink.logging.level.cache" value="FINEST"/>
</properties>
</persistence-unit>