学习如何使用MicroProfile

687 阅读11分钟

开始使用微配置文件项目

MicroProfile指定了一个Java EE(企业)技术和API的集合,它从一个核心的基线微服务中整合出来,在多个MicroProfile运行时提供应用程序的可移植性。

它一直吸引着开发者的注意,因为这种Java EE的实现在服务器启动和代码运行时不会像以前使用以前的Java EE版本时那样占用很多时间。

这是由于构成Java企业(EE)的各个Java规范请求(JARs)的持续敏捷改进所致。

在本教程结束时,您将了解到MicroProfiles是如何工作的以及如何使用它们。

你还将亲身体验一个MicroProfile项目。

主要收获

我们将学到以下内容。

  • 什么是MicroProfile。
  • MicroProfile的先决条件。
  • 使用不同的方法或工具创建MicroProfile应用程序,如从start.microprofile.io/网站,使用Visual Studio Code和IntelliJ。
  • MicroProfile项目结构。
  • 运行microprofile微服务应用程序。

先决条件

跟随本文学习所需的一些基本条件包括。

  • 在你的机器上安装一个支持Java框架的IDE。
  • 安装了任何发行版的JDK 11+。MicroProfile支持JDK 11及以上版本。
  • 安装Gradle或Apache Maven 3.8.1+。
  • Java编程技能

注意:这些要求中的一些可能会在未来发生变化。

什么是MicroProfile?

MicroProfile是一个开源社区驱动的规范,用于定义Java企业技术中的微服务标准。

它定义了微服务如何构建、工作、相互沟通,以及它们如何独立但松散地耦合以促进应用的可移植性。

它有一个由个人、组织和供应商组成的伟大社区,他们在一个开源项目中合作,把微服务带到了企业Java社区。

市场上的微配置文件服务器

目前,有近十种Runtimes。

其中一些显示在下面的图片和表格中。

microprofile runtimes

(图片来自官方网站)

MicroProfile架构详细信息
Payara Micro是一个用于容器化Jakarta EE应用部署的轻量级中间件平台,不需要安装、配置或重写代码,可以快速部署
WildFly是一个轻量级、模块化的微服务框架,集中、简单、以用户为中心,实现了Jakarta EE和Eclipse MicroProfile的最新企业Java标准。
Quarkus为GraalVM和OpenJDK HotSpot构建的Kubernetes Native Java堆栈,由最佳的Java库和标准精心打造。
Apache TomEE这是Apache Tomcat Java企业版,它结合了几个Java企业项目,包括Apache OpenEJB、Apache OpenJPA、Apache OpenWebBeans、Apache MyFaces和其他许多项目。
Hammock这是一个基于CDI的bootstrapping Java企业微服务框架,由于其灵活性和简单性,用于构建应用程序。
开放自由是一个开源的轻量级Java EE微服务框架,用于构建快速高效的云原生Java微服务应用,只运行所需的服务,同时考虑最新的Eclipse MicroProfile标准。
Helidon这是一个Java库的集合,用于编写在快速的Helidon Reactive WebServer上运行的Java微服务,这是一个由Netty驱动的Web核心,同时支持MicroProfile及其标准规范。
KumuluzEE是一个轻量级框架,用于使用标准的Java/JavaEE/JakartaEE/EE4J技术和API开发微服务,可选择扩展,如使用Node.js、Go和其他语言,并将现有应用程序迁移到云原生架构和微服务,以便更容易地进行云原生微服务开发。
富士通_Global Launcher它由富士通公司开发,是一个支持某些MicroProfile规范的Java EE微服务框架,可以将应用捆绑到über-jar/fat文件(JAR文件,包含其所有需要的依赖项)
ThornTail (过时的)是一个Java企业级微服务框架,它只将需要的和指定的包捆绑到一个JAR文件中,并有足够的运行时间来运行它们

生成一个MicroProfile应用程序

在下面的步骤中,你将学习如何使用以下方法和工具来生成Microprofile应用程序。

start.microprofile.io, Microprofile初始化器

使用你的浏览器前往start.microprofile.io/index.xhtml网站。

它将出现如下图所示。

microprofile initializer webpage

你会看到其中的一些选项,如groupIdartifactId*、MicroProfile版本*、Java SE版本构建工具(即Maven和Gradle)、MicroProfile运行时间规范实例

一旦这些设置完成,你就可以下载压缩后的项目。然后,解压,得到你所期望的项目。

设置以下内容。

  • groupId:成为'starter'。
  • artifactId: 成为 "com.starter"。
  • MicroProfile版本:是3.2
  • Java SE版本:将是Java 11
  • 构建工具:Maven或Gradle
  • MicroProfile运行时间:Quarkus
  • 规范的例子部分:选择全部

点击 "下载 "按钮进行下载。

注意:要使用Quarkus作为你的MicroProfile Runtime,你必须选择一个较低的MicroProfile版本 3.2

支持的一些版本和Runtime。

MicroProfile版本运行时间或服务器
1.2Open Liberty, WildFly Swarm, KumuluzEE, Payara Micro, ThornTail V2, Apache TomEE, Helidon
1.3开放自由、KumuluzEE、Payara Micro、ThornTail V2、Apache TomEE
1.4和2.0开放自由、KumuluzEE、Payara Micro、Apache TomEE
2.1开放自由,KumuluzEE,Payara Micro,ThornTail V2,Apache TomEE
2.2开放式Liberty、KumuluzEE、Payara Micro、ThornTail V2、Helidon
3.0开放式自由,KumuluzEE,ThornTail V2,Helidon
3.2Open Liberty, WildFly, KumuluzEE, Payara Micro, ThornTail V2, Quarkus, Helidon
3.3开放式自由,WildFly,KumuluzEE,Payara Micro,ThornTail V2,Helidon
4.0Open Liberty, WildFly, Payara Micro

从4.1版本开始,值得注意的Microprofile API的规范有18个,主要分为两类。MicroProfile应用程序(13)和独立的应用程序(5)。

它们显示如下。

microprofile 4.1 specifications preview

补充一点,Quarkus已经通过了所有Microprofile 3.3技术兼容包(TCK)的测试,如图所示或如下图所示。

microprofile 4.1 specifications update

Quarkus TCK passed

技术兼容包(TCK)是一个测试套件。它检查Java规范请求(JSR)的实现是否符合要求。

MicroProfile Specification TCKs及其目的。

MicroProfile Specification TCKs目的
配置外化你的微服务之外的配置参数。这些参数来自不同的地方,有不同的数据类型,如系统属性、系统环境变量、.properties、.xml、Datasource等。
JWT(JSON网络令牌)传播在你的微服务之外传播安全信息
开放API为您的微服务生成符合OpenAPI标准的API文档
健康状况通过自定义验证来验证您的微服务的健康状况
衡量标准为您的微服务收集并创建运营和业务测量指标
容错它处理所有隔板、超时、断路器、重试和回退。
开放式跟踪它定义了一个API和相关行为,允许服务轻松参与到分布式跟踪环境中。
类型安全的休息客户端提供一种类型安全的方法来通过HTTP调用RESTful服务
JAX-RS(雅加达RESTful Web服务)为MicroProfile应用程序的RESTful通信提供标准的客户端和服务器API。
JSON-B (Jakarta JSON Binding)提供标准的API,用于将JSON文档绑定到Java代码。
JSON-P (Jakarta JSON Processing)提供处理JSON文档的标准API
雅加达注解为Java™ SE和Jakarta EE平台上的各种单独技术的共同语义概念提供注释(评论)。
CDI(Jakarta Contexts and Dependency Injection)。为MicroProfile中包含的越来越多的API提供基础。

你可以在这里阅读更多信息。

根据你的项目规格,你可以添加或删除microprofile规格。

前往该压缩文件并解压。然后,用你的IDE打开它。

如果你使用的是Visual Studio Code,请到下面的部分看看支持你的项目所需的一些扩展。

Visual Studio Code IDE

首先,安装所需的扩展。

这些是。

  • Microprofile Starter
  • microprofile的工具
  • microprofile的扩展包
  • Quarkus

其他(可选),根据你的需要,可能包括。

  • 微配置文件的生成器
  • 开放自由工具
  • 帕亚拉工具

这些都显示在下面的图片中。

some microprofile VSCode extensions

VS Code microprofile extensions

完成后,使用组合键Ctrl + Shift + P ,前往命令调色板,或在菜单栏的 "视图"下找到它。

搜索 "MicroProfile "并选择 "生成一个新的Microprofile启动项目"。

它将通过从microprofile初始化网站获取文件来生成项目。

VSCode Generate microprofile starter project

现在,在下一个弹出的窗口中,设置你的项目。

  • Group Id:到'com.starter'。
  • Artifact Id: 设置为'starter'。
  • Version: 设置为3.2
  • MicroProfile server: 设置为Quarkus
  • Java SE Version: 设置为SE11
  • MicroProfile specifications:选择全部
  • 设置你的项目根文件夹所在的文件夹。

select all microprofile specifications

  • 在新窗口或当前窗口中打开它。

choose if to add it to your workspace or in a new window

IntelliJ IDE

打开IntelliJ IDEA。创建一个新的项目,在你左边的项目类型中,选择 "Microprofile"。

设置以下内容。

  • Name:启动器
  • Location:为你的项目根文件夹设置文件夹
  • Runtime:Quarkus
  • Group: com.starter
  • Artifact: 启动器
  • Project SDK:11

Intellij Microprofile start

现在,在下一步,选择规格;选择所有

在窗口的顶部,你会看到MicroProfile的版本已经设置为3.2。

Intellij specifications

如果你选择WildFly,你会看到你可以选择最高4.0。

点击完成,等待IDE完成项目的索引。

Microprofile项目结构

你会注意到,该项目有两个独立的微服务;'服务-a'和'服务-b'。

你的项目文件夹结构应该如下图所示。

.	 
├── service-a (Folder)	 
├── service-b (Folder)	 
├── readme.md (File)	 
└── starter.iml (File)	 

在第一个微服务中,你会看到所有的规范都分别在一个单独的文件夹中,在src/main/java/com/starter/starter

这些包括客户端配置健康度量openapi弹性安全文件夹。至于服务-b,它只有客户端安全文件夹。

构建微服务

打开两个独立的终端,将它们并排排列。这将有助于你看到它们分别运行。在第一个终端上,导航到 "服务-a"文件夹。

通过从'starter'文件夹中运行来完成。

cd service-a

通过运行来构建第一个微服务。

  • 在Maven中
mvn package	 
  • 在Gradle中使用。
./gradlew build	

在第二个终端,也就是'service-b'终端,根据你选择的构建方式,分别运行上述命令。等待它下载所有需要的依赖项,同时构建文件。

由于这不是一个über-jar/fat文件(它与所有的依赖关系一起被编译),依赖关系将被自动存储在目标文件夹中。

你可以在 "services "文件夹中的readme文件中查看如何创建。

运行microprofile微服务应用程序

运行服务-a

前往'service-a'终端,运行以下命令。

  • Maven中。
mvn compile quarkus:dev	 
  • Gradle
./gradlew quarkusDev	 

这将在开发模式下运行该服务,支持 "热重载 "功能。当你在浏览器中通过http://localhost:8080 访问该应用程序时,它应该如下图所示。

service-a webpage

运行服务-b

由于quarkus微服务在默认情况下运行在8080端口,你将需要逃避这个端口,因为它已经在使用了。你将在一个不同的端口上运行应用程序,你将很快指定。

运行。

java -Dquarkus.http.port=8180 -jar target/starter-runner.jar

这将在端口8180 ,运行'target'文件夹中的'starter-runner'JAR文件。 使用http://localhost:8180 ,在浏览器上访问它。

浏览端点

  • 使用在线Swagger编辑器,一个开放API文档查看器(Swagger编辑器)

service-a 网页上,点击链接可以看到每个链接的输出。至于'Open API Documentation'链接,它将自动下载文档。

通过使用文本编辑器打开文档,然后将文本复制粘贴到网站上,使用图形用户界面(GUI)访问端点。

swagger editor

  • 使用嵌入式OpenAPI文档查看器。

这可以通过在你的项目中添加OpenAPI依赖项来实现。

对于Maven:前往 "service-a "文件夹中的 "pom.xml "文件,在依赖项标签下添加以下代码。

<!-- https://mvnrepository.com/artifact/org.openapitools/openapi-generator -->	 
<dependency>	 
 <groupId>org.openapitools</groupId>	 
 <artifactId>openapi-generator</artifactId>	 
 <version>5.2.0</version>	 
</dependency>	 

对于Gradle:前往 "service-a "文件夹中的 "build.gradle "文件,在依赖项下添加以下代码。

// https://mvnrepository.com/artifact/org.openapitools/openapi-generator	 
implementation group: 'org.openapitools', name: 'openapi-generator', version: '5.2.0'	 

你可以在这里找到更多的OpenAPI依赖性代码。你也可以在这里找到以前的任何其他依赖项。

停止运行中的实例,重建并重新运行,以允许服务器的编译和重新运行。如果你使用IntelliJ IDE,它将运行后台任务来为你解决依赖关系,从而给你提供轻松的编码时间。

现在,在你的浏览器上,将/Swagger-ui 添加到localhost URL中,让你访问本地OpenAPI文档查看器。这是在http://localhost:8080/swagger-ui

它看起来应该如下。

local openapi viewer

当你想测试输入值、参数、定义和输出值时,它很有用。至于Open Tracing能力,这是用Jaeger完成的,前往页面中提供的链接或Readme.md文件来配置它并运行它。

结论

MicroProfile是用来设置企业Java框架中使用的微服务标准的。它有几个特点和规范,包括但不限于。配置、JWT传播、OpenApi、健康、度量、容错、开放追踪、Restful Web服务、JSON-B、JSON-P、Jakarta注释和Jakarta CDI。

使用的一些服务器包括:Quarkus、Payara Micro、WildFly、Apache TomEE、Hammock、Open Liberty、Helidon、KumuluzEE和ThornTail。不同的版本有不同的功能和规格。

本教程到此结束,下面是对我们所学内容的简要总结。

  • 什么是MicroProfile?
  • 如何使用microprofile初始化网站、Visual Studio Code和IntelliJ IDEA(终极版)初始化MicroProfile项目。
  • 如何单独构建应用程序的微服务。
  • 如何在开发和运行模式下分别运行微配置文件服务。
  • 如何通过在线Swagger OpenApi编辑器和在本地将其添加为依赖关系来查看OpenAPI文档。