[英]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.
我尝试从 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.