博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle推出轻量级Java微服务框架Helidon
阅读量:5956 次
发布时间:2019-06-19

本文共 3870 字,大约阅读时间需要 12 分钟。

Oracle推出轻量级Java微服务框架Helidon

作者 | Michael Redlich

译者 | 谢丽

近日,Oracle 推出了一个新的开源框架 Helidon,该项目是一个用于创建基于微服务的应用程序的 Java 库集合。和 Payara Micro、Thorntail(之前的 WildFly Swarm)、OpenLiberty、TomEE 等项目一样,该项目也加入了 MicroProfile 家族。

Helidon 最初被命名为 J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE 和 Helidon MP。Helidon SE 提供了创建微服务的三个核心 API:Web 服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。Helidon MP 支持用于构建基于微服务的应用程序的 MicroProfile 1.1 规范。

Web 服务器

受 NodeJS 和其他 Java 框架的启发,Helidon 的 Web 服务器是一个异步、反应性 API,运行在 Netty 之上。WebServer 接口包括对配置、路由、错误处理以及构建度量和健康端点的支持。

下面的示例代码演示了如何启动一个简单的 Helidon Web 服务器,在一个随机可用的端口上显示“It works!”:

// 在一个随机可用的端口上启动服务器 public void startWebServerUsingRandomPort() throws Exception {
WebServer webServer = WebServer .create(Routing.builder() .any((req,res) -> res.send("It works!" + "\n")) .build()) .start() .toCompletableFuture() .get(10,TimeUnit.SECONDS); System.out.println("Server started at: http://localhost:" + webServer.port() + "\n"); webServer.shutdown().toCompletableFuture(); }

配 置

配置组件 Config 加载和处理键 / 值格式的配置属性。在默认情况下,配置属性将从定义好的 application.properties 或 application.yaml 文件中读取,它们位于 /src/main/resources 目录下。

下面的示例代码基于前面的例子构建,它演示了如何使用 Config,通过读取 applications.yaml 文件获得指定的端口启动 Web 服务器。

// application.yaml server:  port: 8080  host: 0.0.0.0 // 在 application.yaml 预定义的端口上启动服务器 public void startWebServerUsingDefinedPort() throws Exception {
Config config = Config.create(); ServerConfiguration serverConfig = ServerConfiguration.fromConfig(config.get("server")); WebServer webServer = WebServer .create(serverConfig,Routing.builder() .any((req,res) -> res.send("It works!" + "\n")) .build()) .start() .toCompletableFuture() .get(10,TimeUnit.SECONDS); System.out.println("Server started at: http://localhost:" + webServer.port() + "\n"); webServer.shutdown().toCompletableFuture(); }

安 全

类 Security 为身份验证、授权和审计提供支持。已经有许多用于 Helidon 应用程序的安全提供程序实现。有三种方法可以将安全性内置到 Helidon 应用程序中:从构建器、通过配置或者是前两者的结合。

下面的示例代码演示了如何构建 Security 实例、使用 Config 获取用户身份验证(使用加密密码)并显示服务器时间。

// application.yaml http-basic-auth:  users:  login: "mpredli"  password: "${CLEAR=somePassword}"  roles: ["user","admin"] Config config = Config.create(); Security security = Security.builder()  .config(config)  .addProvider(...)  .build(); String user = config.get("http-basic-auth.users.login").asString(); String password = config.get("http-basic-auth.users.password").asString(); System.out.println("\n"); System.out.println("INFO: user = " + user); System.out.println("INFO: password = " + password); SecurityTime time = SecurityTime.builder().build(); time = security.getServerTime(); System.out.println("INFO: server time = " + time.toString()); System.out.println("\n");

GitHub 提供了更详尽的安全示例:

https://github.com/oracle/helidon/tree/master/security/examples

Helidon 的架构

下面的架构图显示了 Helidon SE 和 Helidon MP 的关系。

Oracle推出轻量级Java微服务框架Helidon

下图说明了 Helidon SE 和 Helidon MP 所属的微服务框架类别。

Oracle推出轻量级Java微服务框架Helidon

入门指南

Helidon 提供了快速入门示例来演示 Helidon SE 和 Helidon MP 之间的区别。

下面的 Maven 和 Java 命令将生成并打包 Helidon SE 示例,使用 Helidon 的 Web 服务器创建一个 REST 服务。

$ mvn archetype:generate -DinteractiveMode=false \  -DarchetypeGroupId=io.helidon.archetypes \  -DarchetypeArtifactId=helidon-quickstart-se \  -DarchetypeVersion=0.10.1 \  -DgroupId=io.helidon.examples \  -DartifactId=quickstart-se \  -Dpackage=io.helidon.examples.quickstart.se $ cd quickstart-se $ mvn package $ java -jar target/quickstart-se.jar

下面的 Maven 和 Java 命令将生成并打包 Helidon MP 示例,使用 MicroProfile 的 JAX-RS API 创建一个 REST 服务。

$ mvn archetype:generate -DinteractiveMode=false \  -DarchetypeGroupId=io.helidon.archetypes \  -DarchetypeArtifactId=helidon-quickstart-mp \  -DarchetypeVersion=0.10.1 \  -DgroupId=io.helidon.examples \  -DartifactId=quickstart-mp \  -Dpackage=io.helidon.examples.quickstart.mp $ cd quickstart-mp $ mvn package $ java -jar target/quickstart-mp.jar

一旦服务器开始运行,就可以执行下面的命令:

Oracle推出轻量级Java微服务框架Helidon

在 GitHub 上可以找到整个 Helidon 项目:

https://github.com/oracle/helidon

英文原文

https://www.infoq.com/news/2018/10/oracle-introduces-helidon

转载地址:http://wurxx.baihongyu.com/

你可能感兴趣的文章
【转】利用mybatis-generator自动生成代码
查看>>
C# 将MSMQ消息转换成Json格式 【优化】
查看>>
[LeetCode] Count Univalue Subtrees 计数相同值子树的个数
查看>>
Android 编程下的自定义 xmlns
查看>>
传纸条(一)(双线程dp)
查看>>
bootstrap精简教程
查看>>
【转】c++继承:公有、私有、保护
查看>>
实现经常使用的配置文件/初始化文件读取的一个C程序
查看>>
Intellij idea断点 Debugger slow: Method breakpoints my dramatically slow down debugging
查看>>
C指针 的一些练习
查看>>
第一个JSP程序
查看>>
KeyDown,KeyPress 和KeyUp
查看>>
MongoDB 聚合管道(Aggregation Pipeline)
查看>>
AngularJS之初级Route【一】(六)
查看>>
Spring MVC+Mybatis 执行存储过程,使用Map进行参数的传递
查看>>
Node。js 访问gmail
查看>>
SQL各种连接查询详解(左连接、右连接..)
查看>>
将DataTable转换成CSV文件
查看>>
将文本文件的内容存储在DataSet中的方法总结
查看>>
在C#代码中应用Log4Net(三)Log4Net中配置文件的解释
查看>>