docker-compose for jakartaee restful jpa Web应用程序无法正常工作

我花了几天的时间来为一个简单的jakartaEE / JavaEE Restful JPA Web应用程序编写一个docker-compose文件。 DB是PostgreSQL,应用程序服务器是payara。该应用程序将少量条目插入数据库,并在每个剩余调用响应中返回集合。当我在本地安装的payara和Postgres中部署相同的应用程序时,它运行良好。但是docker-compose失败并显示错误:

An error occurred during deployment: Class 
       com.docker.java.petstore.service.PetstoreService has unsupported major or 
      minor version numbers,which are greater than those found in the Java 
      Runtime Environment version 1.8.0_222. Please see the server.log for more details.

https://imgur.com/a/zVvVaGP

我尝试从payara管理控制台部署war文件,但由于相同的错误而失败。

相关代码如下所示: https://gist.github.com/JohnyzHub/cf8e9560b8640dbfd27dc4bb98d5991c

使用的环境:

        java 11
        JakartaEE 8
        Payara appserver
        postgresql

使用glassfish-resource.xml文件动态创建连接池和数据源。

该错误看起来很奇怪,我使用的是Java 11,但该错误与特定的Java 8版本有关。我不知道这里可能有什么问题。

当我使用相同的docker文件部署没有JPA层的类似Java 11 Web应用程序时,在docker上运行良好。

让我知道是否需要其他详细信息。

感谢您的帮助。

tanxueli 回答:docker-compose for jakartaee restful jpa Web应用程序无法正常工作

Dockerhub上的官方Payara Docker images正在内部使用Java 8。这与Java 11编译的源代码冲突,因此无法正常工作。

在GitHub上有一个open issue,但不幸的是,现在已经回答了几个月。

要解决此问题,请选择其他应用程序服务器(例如,Open Liberty Universal Base Docker映像具有用于latest Java versions的标签),或从中构建您自己的Docker映像。 OpenJDK 11基本映像。

要弄清楚如何创建自己的Docker映像,我建议看一下Adam Bien's Docklands repository,其中包含多个示例。

,

您的服务器错误表明,您在docker映像中使用比当前使用的版本(JDK8)高的版本(JDK11)编译类。

在Application Server Docker映像上检查已使用的Java运行时。 然后要么使用该服务器的JDK8版本编译petstore,要么升级docker容器映像以使用比用于编译的容器更高的JDK。

本文链接:https://www.f2er.com/2694093.html

大家都在问