java - 用于 jakartaee restful jpa Web 应用程序的 docker-compose 不工作
问题描述
我正在努力为一个简单的 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.
我尝试从 payara 管理控制台部署战争文件,但失败并出现同样的错误。
相关代码显示在要点中: 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 存储库,其中包含多个示例。
推荐阅读
- sql - 在 Laravel 中计算单个列的不同值
- pyspark - 在 pyspark 中删除所有重复的实例
- apache - .htaccess 用于 SPA,将传入请求重写为 index.html,静态资源除外
- c++ - 将对象的字节复制到数组并再次返回是否安全
- c# - Select语句在db C#中没有得到任何数据
- java - 交易标记为仅回滚,原因不明
- javascript - 使用 C# 发送 JS 对象的 HTTP 响应不起作用
- shell - 如何检查子目录的读写执行权限?
- neo4j - 如何在 NEO4J 的路径中获取不同的节点?
- python - 具有多个元素的数组的真值是不明确的。使用 ReLu 函数使用 a.any() 或 a.all() python numpy