Рубрики
Без рубрики

Постоянство для микросервисов Java в Kubernetes через JPA

Постоянство для микросервисов Java в Kubernetes через JPA. Помеченные микросервисами, java, kubernetes.

В течение последних недель я работал над примером приложения, которое демонстрирует, как разработчики Java EE могут начать работу с микросервисами. Приложение представляет собой полный сквозной образец, который включает в себя веб-приложение, бизнес-логику, аутентификацию, а теперь еще и постоянство. Он работает на Kubernetes и History, и есть сценарии для его легкого развертывания.

Получите код cloud-native-starter с GitHub.

Java Persistence API

В примере я использую полный Java-стек с открытым исходным кодом с OpenJ9, OpenJDK, Open Liberty и MicroProfile. Чтобы развернуть микросервисы в Kubernetes, я создал образ. Прочтите мою статью Докеризация приложений Java Micro Profile подробнее.

Open Liberty предоставляет несколько довольно хороших руководств. Одно из руководств конкретно касается JPA: Доступ и сохранение данных в микросервисах/| . Я не хочу повторять здесь все, а только выделю изменения, которые мне пришлось сделать, чтобы запустить эту функциональность в контейнере, а не через локальную установку Open Liberty.

Вот краткое описание JPA:

JPA – это спецификация Java EE для представления табличных данных реляционной базы данных в виде простых старых объектов Java (POJO). JPA упрощает объектно-реляционное сопоставление (ORM), используя аннотации для сопоставления объектов Java с таблицами в реляционной базе данных. В дополнение к предоставлению эффективного API для выполнения операций CRUD, JPA также снижает нагрузку на необходимость написания кода JDBC и SQL при выполнении операций с базой данных и учитывает различия, зависящие от поставщика базы данных.

Конфигурация образца приложения

На следующей диаграмме показана упрощенная архитектура примера cloud-native-starter. Веб-приложение вызывает через Ingress службу Web-API, которая реализует шаблон backend-for-frontend. Служба Web-API вызывает службу Articles, которая хранит данные в базе данных SQL в IBM Cloud . Очевидно, что вместо этого вы можете использовать любую другую базу данных SQL.

Чтобы получить доступ к Db2 в облаке IBM, сначала необходимо загрузить драйвер через Maven . Обратите внимание, что драйвер не входит в файлы war вместе с бизнес-логикой микросервисов, но его необходимо скопировать в определенный каталог Open Liberty :/opt/ol/wlp/usr/shared/resources/jcc-11.1.4.4.jar

Далее вам нужно определить в server.xml информация о драйвере и источнике данных.


    
        webProfile-8.0
        microProfile-2.1
    

    

    
        
    

    
        
        
  

Далее необходимо определить единицу сохранения в persistence.xml .

Самое сложное для меня было найти правильное местоположение для этого файла. Для того, чтобы все версии Maven создавали его правильно, я вставил его в ‘src/main/resources/META-INF/persistence.xml ‘. Это приводит к ошибке.был файл с внутренней структурой ‘classes/META-INF/persistence.xml ‘.


    
        jdbc/articlejpadatasource
        
            
            
        
    

Использование JPA в Java

После того, как вся настройка выполнена, написание Java-кода становится простым делом.

Сначала вам нужно определить класс Java, который представляет записи в таблице. Ознакомьтесь с кодом Подлинность статьи.java с пятью столбцами идентификатора, названия, URL-адреса, автора и даты создания. Как определено в persistence.xml эта таблица создается автоматически.

Операции CRUD для статей определены в ArticleDao.java . Код довольно прямолинеен. Единственное, что меня смутило, так это то, что я должен начинать и фиксировать транзакции вручную для операции создания. В образце Open Liberty в этом не было необходимости. Я пытаюсь выяснить, в чем разница.

В JPADataAccess.java логика реализована для добавления и чтения статей. Вводится артикулированный препарат. Опять же, код выглядит простым. Урок, который я извлек здесь, заключается в том, что внедрение зависимостей, похоже, работает только тогда, когда верхние уровни, вызывающие этот код, также используют внедрение зависимостей и @ApplicationScoped.

Как запустить пример

Я написал сценарии для создания базы данных SQL и создания службы статей. Ознакомьтесь с documentation , чтобы самостоятельно запустить образец на Minicube или в IBM Cloud Kubernetes Service .

После установки Open API API Explorer можно использовать для создания новой статьи.

Таблица отображается в консоли Db2.

Данные в таблице также могут быть отображены в консоли.

Чтобы узнать больше о микросервисах, созданных с использованием Java и MicroProfile, ознакомьтесь с репозиторием cloud-native-starter .

Оригинал: “https://dev.to/nheidloff/persistence-for-java-microservices-in-kubernetes-via-jpa-2pc6”