Статьи

Серия Microservices: MicroProfile и Apache TomEE

Вступление

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 .