java - openejb 容器和 hibernate 的集成测试失败

标签 java hibernate jakarta-ee jpa openejb

我正在尝试为我的 java ee 6 应用程序编写集成测试。 这适用于 open jpa 和 eclipselink。 但它不适用于 hibernate 。

我在 github 上创建了一个最小项目来调试这里的问题: https://github.com/Crydust/guestbooktwo

这些工作

D:\Projects\guestbooktwo>mvn clean verify -P openjpa
D:\Projects\guestbooktwo>mvn clean verify -P eclipselink

这些不起作用

D:\Projects\guestbooktwo>mvn clean verify -P hibernate-a
D:\Projects\guestbooktwo>mvn clean verify -P hibernate-b

这是我得到的错误:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.816 sec <<< FAILURE! - in be.crydust.guestbooktwo.ejb.PostBoundaryIT
be.crydust.guestbooktwo.ejb.PostBoundaryIT  Time elapsed: 1.816 sec  <<< ERROR!
org.apache.openejb.OpenEjbContainer$AssembleApplicationException: org.apache.openejb.OpenEJBException: Creating application failed: D:\home\kristof\Projects\guestbooktwo\target: javax/persistence/Converter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.hibernate.jpa.boot.scan.spi.ClassFileArchiveEntryHandler.containsClassAnnotationsOfInterest(ClassFileArchiveEntryHandler.java:112)
    at org.hibernate.jpa.boot.scan.spi.ClassFileArchiveEntryHandler.handleEntry(ClassFileArchiveEntryHandler.java:74)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:167)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:142)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:142)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:142)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:142)
    at org.hibernate.jpa.boot.archive.internal.ExplodedArchiveDescriptor.visitArchive(ExplodedArchiveDescriptor.java:78)
    at org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:72)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.scan(EntityManagerFactoryBuilderImpl.java:723)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:219)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:186)
    at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:45)
    at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:57)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:150)
    at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:55)
    at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:115)
    at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:101)
    at org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:150)
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:752)
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:612)
    at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:415)
    at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56)
    at be.crydust.guestbooktwo.ejb.PostBoundaryIT.startTheContainer(PostBoundaryIT.java:31)

我真的认为配置文件 hibernate-b 会起作用。 有谁知道我做错了什么?

似乎这可能相关:
http://comments.gmane.org/gmane.comp.java.openejb.user/15793

最佳答案

我已经修好了。该项目现在可与 openjpa、eclipselink、hibernate 4.2.x 和 hibernate 4.3.x 配合使用。 openejb 和 tomee 的稳定版本不能与 hibernate 4.3.x 一起使用。因此需要快照版本。

此处更新了代码:
https://github.com/Crydust/guestbooktwo

关于java - openejb 容器和 hibernate 的集成测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168943/

相关文章:

java - FlyingSaucer ITextRenderer 完成错误(不平衡的保存/恢复和空白 PDF)

java - 如何检查 zip 存档中是否存在该文件?

spring - 在 Apache Tomcat 6 中部署 Spring 2 应用程序时出现问题

Java 图形不显示

java - Spring框架JDBC使用两个数据源

mysql - 如何在hibernate的配置文件中拥有多个映射资源?

hibernate - 如何使用 Hibernate <subselect> :

java - 使用网络代理时 Hibernate 插入两次

java - Java 的最佳 OpenID 库

java - J2EE 重定向到外部 URL