Вступление
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 . |