问题标签 [embedded-container]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
547 浏览

java - 在嵌入式 TomEE 8.0 中使用带有 OpenJPA 的实体管理器时出现神秘的“org.apache.openjpa.persistence.PersistenceException:null”异常

我试图为使用 Apache TomEE Maven 插件开发的 Java Enterprise Web 应用程序编写测试。该应用程序运行良好,一切似乎都正常运行。我想过使用 JUnit Jupiter 5 和嵌入 TomEE 8.0.0 的 EJBContainer API(我对 TomEE Maven 插件使用相同的版本)。但是,在我引导嵌入式容器之后,一旦调用了使用实体管理器的方法,就会启动一个非常混乱的异常。下面是异常,以及嵌入式容器在抛出之前记录的一些信息。

值得注意的是,嵌入式容器记录了以下行,当我使用 TomEE Maven 插件正常启动应用程序时不会出现该行:

以下行也是如此,它不包含在上一个块中:

我尝试按照 URL http://tomee.apache.org/javaagent.html提供的说明进行操作,这很可能会解决问题,但这些似乎已经过时,最终我无法让它们工作。

然后我将用于测试的持久性提供程序从默认的 OpenJPA 3.1.0 切换到 EclipseLink 2.7.5(当前是最新版本),一切似乎都运行良好......直到它没有。Criteria API 用于在应用程序中编写查询,其中一些使用 JOIN 子句和 GROUP BY,并且由于一些讨厌的错误,EclipseLink 在制定 JPQL 等效查询时简单地忽略了 GROUP BY。我试图通过用普通的 JPQL 编写这些查询来临时解决这个问题,但是其中一些在 ORDER BY 子句中使用了 COALESCE 函数,你知道吗……这不受 OpenJPA 支持,导致应用程序在运行时抛出错误在非测试环境中。但这与主要问题无关,所以让我们继续。

下面是我的测试类:

这些是test.persistence.xmltest.resources.xml文件:

和文件几乎相同,唯一的区别是数据源和持久性单元名称以及 JDBC URL(测试数据库在内存中,主要数据库是基于文件的,尽管因为我使用的是 TomEE Mavenpersistence.xml插件resources.xml没有太大的实际区别)。

请注意,当使用注释在整个应用程序中注入实体管理器时PersistenceContext,我没有指定unitName元素以确保使用正确的持久性单元,具体取决于是否正在运行测试;没有歧义,因为两者persistence.xml都只test.persistence.xml定义了一个持久性单元,因此容器会自动选择正确的持久性单元(在运行测试时,主资源文件被忽略而有利于测试文件)。

如前所述,只要调用实体管理器方法(甚至entityManager.getProperties()),就会引发异常。在测试中,该方法userAgent.createUser(user)被调用,如下所示:

0 投票
1 回答
532 浏览

spring-boot - 嵌入式容器测试 Spring Boot 在 bitbucket 管道上失败

运行 Playtika 嵌入式 postgres 容器导致 bitbucket 管道失败 com.github.dockerjava.api.exception.DockerException: Status 403: {"message":"authorization denied by plugin pipelines: Invalid content length provided"}

完整的堆栈跟踪位于 zip 文件 test.zip

我对创建这些管道有点陌生,我不知道该怎么做。我尝试做很多我发现的事情,例如 https://github.com/testcontainers/testcontainers-java/issues/3296 和其他一些

我的引导文件具有以下属性

我的 build.gradle.kts 和我的管道配置在这个 zip config-files.zip

有人可以帮我弄这个吗?我不知道该怎么做...

更新 2020-11-09

这是使用 Spring 2.3.5 构建的管道的堆栈跟踪

更新 2020-11-09 2

这是带有管道 yaml 的项目,我删除了所有其他内容,只留下了我在 bitbucket 上测试的基本内容,并且在同一点上失败了

管道测试.zip