Вступление
MicroProfile — это инициатива, начатая в сентябре 2016 года группой известных поставщиков для создания архитектуры микросервисов на основе платформы JEE. Миссия — оптимизировать Enterprise Java для архитектуры микросервисов . Разработчики могут использовать эту архитектуру для стандартизированного создания и разработки приложений Microservices с использованием платформы Enterprise Java.
Построение API будет частью программы JCP. MicroProfile в настоящее время построен на основе минимального набора технологий, который включает в себя JAX-RS, CDI и JSONP. Будут добавлены дополнительные возможности для создания более надежной платформы Microservices. Проект MicroProfile все еще находится в стадии разработки, и его текущий выпуск 1.2 основан на Eclipse Foundation под лицензией Apache 2.0. Более подробную информацию можно найти по адресу https://microprofile.io/
В этой статье мы рассмотрим, как создать и развернуть конечную точку MicroSvices RESTful на основе JEE, используя одну такую среду выполнения MicroProfile с именем Apache TomEE. Apache TomEE — проект с открытым исходным кодом, который породил компанию Tomitribe, которая является одним из основных поставщиков, участвующих в проекте MicroProfile.
Apache TomEE Микропрофиль
Приведенный здесь пример будет сфокусирован на создании конечной точки RESTful, которая будет извлекать все расходы клиента для конкретного клиента. Давайте быстро перейдем к коду:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
@ApplicationScoped @Produces ({MediaType.APPLICATION_JSON}) @Path ( "/expenses" ) public class ExpenseEndpoint { private Map<String, List<Expense>> expenses; @GET @Path ( "{customerId}" ) public List<Expense> getExpenses( @PathParam ( "customerId" ) String customerId) throws Exception { expenses = loadExpenses(); return expenses.get(customerId); } ... |
Приведенный выше код представляет собой простую конечную точку JAX-RS ExpenseEndpoint, которая позволяет извлекать расходы клиентов на основе идентификатора. Мы создадим и опубликуем эту конечную точку, используя среду выполнения Tomee. Повествование о сборке является частью файла POM, в котором используется плагин TomEE maven, который позволяет нам создавать и развертывать наш микросервис ExpenseEndpoint
.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
.... < dependencies > < dependency > < groupId >org.apache.tomee</ groupId > < artifactId >javaee-api</ artifactId > < version >7.0</ version > </ dependency > < dependency > < groupId >com.fasterxml.jackson.core</ groupId > < artifactId >jackson-databind</ artifactId > < version >2.8.7</ version > </ dependency > </ dependencies > < build > < finalName >tomeeweb</ finalName > < plugins > ... < plugin > < groupId >org.apache.tomee.maven</ groupId > < artifactId >tomee-maven-plugin</ artifactId > < version >7.0.1</ version > < configuration > < tomeeClassifier >webprofile</ tomeeClassifier > </ configuration > < executions > < execution > < phase >package</ phase > < goals > < goal >exec</ goal > </ goals > </ execution > </ executions > </ plugin > .... |
Приведенный выше POM-файл использует цель exec
фазы package
для создания jar-файла. Сам факт того, что наша конечная точка будет независимой микросервисной службой, которая должна быть способной развертываться и работать изолированно, должна быть встроена в пакет времени выполнения сервера, в большей степени в виде полной фишки. Другой альтернативой может быть создание образа докера. Чтобы построить наш код, выполните следующую команду:
1
|
mvn package |
Приведенная выше команда maven запустит цель exec
плагина TomEE maven и создаст толстую банку. Жирная банка будет внутренне содержать среду выполнения нашего мини-веб-приложения, и это можно воспринимать как микропрофиль. Чтобы запустить наше приложение, используйте следующую команду:
1
|
java -jar target\<buildname>-exec.jar |
Это запустит среду выполнения TomEE, развернет нашу службу ExpenseEndpoint
RESTful. Вы можете зайти в браузер и протестировать конечную точку по следующему URL: http: // localhost: 8080 / cost / C001, и он вернет вам строку JSON со всеми данными о расходах идентификатора клиента C001 .
Как говорилось ранее, MicroProfile все еще находится в стадии разработки. Выше был только один микропрофиль от Apache TomEE, основанный на JAX-RS, JSON и CDI в качестве минимального стека API. Проект MicroProfle продолжит свое развитие через открытое сотрудничество и обсуждения в сообществе разработчиков. У нас есть большое сообщение: JEE здесь, чтобы остаться!
Код этой статьи можно найти по адресу https://github.com/rhathi/microprofile.
Ссылка: | Серия Microservices: MicroProfile и Apache TomEE от нашего партнера JCG Раджива Хати в блоге TECH ORGAN . |