docker -создать для jakartaee не работает веб-приложение jpa - PullRequest
1 голос
/ 29 января 2020

Я несколько дней пытаюсь написать docker -компонентный файл для простого jakartaEE / JavaEE спокойного JPA-веб-приложения. БД PostgreSQL, а сервер приложений - паяра. Это приложение вставляет несколько записей в БД и возвращает коллекцию в каждом ответе на вызов покоя. Когда я развертываю одно и то же приложение в локально установленном 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

Я попытался развернуть файл war из консоли администратора payara, но не удалось с той же ошибкой.

Соответствующий код показан здесь в гисте: https://gist.github.com/JohnyzHub/cf8e9560b8640dbfd27dc4bb98d5991c

Используемая среда:

        java 11
        JakartaEE 8
        Payara appserver
        postgresql

Использование glassfish-resource.xml файла для динамического создания пула соединений и источника данных.

Ошибка выглядит странно, я использую java 11, но ошибка о специфике c java 8 версия. Я не понимаю, что здесь может быть не так.

Когда я развернул подобное веб-приложение java 11 без слоя JPA с тем же файлом docker, оно работает нормально на docker.

Дайте мне знать, если понадобятся дополнительные детали.

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Официальные Payara Docker изображения на Dockerhub используют Java 8 внутри. Это противоречит вашему скомпилированному исходному коду Java 11 и не работает.

Существует открытый выпуск для этого на GitHub, но, к сожалению, теперь отвечайте месяцами.

В качестве обходного пути либо выберите другой сервер приложений (например, у изображений Open Liberty Universal Base Docker есть теги для последних Java версий ), либо создайте свой собственный Docker образ Например, из базового образа OpenJDK 11.

Чтобы выяснить, как создать собственное Docker изображение, я бы посоветовал взглянуть на репозиторий Adam Bien's Docklands , который содержит несколько примеров. .

1 голос
/ 30 января 2020

Ошибка вашего сервера говорит о том, что вы скомпилировали классы в более высокой версии (JDK11), чем она используется в настоящее время (JDK8) в образе docker.

Проверьте используемую Java среду выполнения в приложении Сервер Docker изображение. Затем либо скомпилируйте petstore, используя эту версию сервера JDK8, либо обновите образ контейнера docker, чтобы использовать более высокий JDK, чем тот, который использовался для компиляции.

...