开始使用微配置文件项目
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架构 | 详细信息 |
---|---|
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初始化器。
- Visual Studio Code,IntelliJ IDE, 或其他任何支持Java开发的IDE。
start.microprofile.io, Microprofile初始化器
使用你的浏览器前往start.microprofile.io/index.xhtml网站。
它将出现如下图所示。
你会看到其中的一些选项,如groupId、artifactId*、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.2 | Open 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.2 | Open Liberty, WildFly, KumuluzEE, Payara Micro, ThornTail V2, Quarkus, Helidon |
3.3 | 开放式自由,WildFly,KumuluzEE,Payara Micro,ThornTail V2,Helidon |
4.0 | Open Liberty, WildFly, Payara Micro |
从4.1版本开始,值得注意的Microprofile API的规范有18个,主要分为两类。MicroProfile应用程序(13)和独立的应用程序(5)。
它们显示如下。
补充一点,Quarkus已经通过了所有Microprofile 3.3技术兼容包(TCK)的测试,如图所示或如下图所示。
技术兼容包(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
其他(可选),根据你的需要,可能包括。
- 微配置文件的生成器
- 开放自由工具
- 帕亚拉工具
这些都显示在下面的图片中。
完成后,使用组合键Ctrl + Shift + P
,前往命令调色板,或在菜单栏的 "视图"下找到它。
搜索 "MicroProfile "并选择 "生成一个新的Microprofile启动项目"。
它将通过从microprofile初始化网站获取文件来生成项目。
现在,在下一个弹出的窗口中,设置你的项目。
Group Id
:到'com.starter'。Artifact Id
: 设置为'starter'。Version
: 设置为3.2MicroProfile server
: 设置为QuarkusJava SE Version
: 设置为SE11MicroProfile specifications
:选择全部- 设置你的项目根文件夹所在的文件夹。
- 在新窗口或当前窗口中打开它。
IntelliJ IDE
打开IntelliJ IDEA。创建一个新的项目,在你左边的项目类型中,选择 "Microprofile"。
设置以下内容。
Name
:启动器Location
:为你的项目根文件夹设置文件夹Runtime
:QuarkusGroup
: com.starterArtifact
: 启动器Project SDK
:11
现在,在下一步,选择规格;选择所有。
在窗口的顶部,你会看到MicroProfile的版本已经设置为3.2。
如果你选择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
访问该应用程序时,它应该如下图所示。
运行服务-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)访问端点。
- 使用嵌入式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
。
它看起来应该如下。
当你想测试输入值、参数、定义和输出值时,它很有用。至于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文档。