繁体   English   中英

用于 jakartaee restful jpa Web 应用程序的 docker-compose 不起作用

[英]docker-compose for jakartaee restful jpa web application not working

我正在努力为一个简单的 jakartaEE/JavaEE 宁静 JPA Web 应用程序编写 docker-compose 文件几天。 DB是PostgreSQL,应用服务器是payara。 此应用程序向 DB 插入一些条目,并在每个休息调用响应中返回集合。 当我在本地安装的 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 上运行良好。

如果需要其他详细信息,请告诉我。

任何帮助表示赞赏。

Dockerhub上的官方Payara Docker 镜像在内部使用 Java 8。 这与您的 Java 11 编译源代码冲突并且不起作用。

在 GitHub 上有一个悬而未决的问题,但不幸的是,现在回答了几个月。

作为变通方法,要么选择另一个应用程序服务器(例如 Open Liberty Universal Base Docker 映像具有最新 Java 版本的标签),要么从例如 OpenJDK 11 基本映像构建您自己的 Docker 映像。

要弄清楚如何创建自己的 Docker 映像,我建议查看Adam Bien 的 Docklands 存储库,其中包含多个示例。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM