IBM发布Open Liberty 18.0.0.4,支持MicroProfile 2.1和反应性扩展框架

IBM在2018年第四季度发布的Open Liberty 18.0.0.4提供了对MicroProfile 2.1、反应性扩展框架和连接池指标的全面支持。根据发布说明:

Open Liberty现在对JAX-RS 2.1进行了反应性扩展,这样你就可以使用来自Apache CXFJersey的提供程序。在ops方面,Liberty运行时提供了一些连接池指标,现在,你可以从MicroProfile Metrics特性提供的/metrics端点访问这些指标。

Open Liberty于2017年9月首次推出,是IBM WebSphere Liberty应用服务器的开源实现,用于构建微服务和原生云应用程序。Open Liberty对MicroProfile的持续支持确保了最新版本包含在季度发行版中。简单看一下Open Liberty的发行历史就能明白这一点:

  • 2017年9月:17.0.0.3 —— MicroProfile 1.2
  • 2017年12月:17.0.0.4 —— JSF实现
  • 2018年3月: 18.0.0.3 —— MicroProfile 1.3
  • 2018年6月: 18.0.0.2 —— Java EE 8
  • 2018年9月: 18.0.0.3 —— MicroProfile 1.4MicroProfile 2.0
  • 2018年12月: 18.0.0.4 —— MicroProfile 2.1

MicroProfile 2.1

Open tracking 1.2是MicroProfile 2.1中唯一更新的API,于2018年10月19日发布。新特性及改进特性包括:允许更有针对性的跟踪结果;更容易将跟踪请求与应用程序的URL关联起来;跳过JAX-RS请求跟踪;使用另一种Open Tracing Span名称格式;添加了新的MicroProfile Config 1.3 API键,支持新的Open Tracing函数。

JAX-RS请求可以通过指定一个与UriInfo.getPath()相匹配的正则表达式排除在跟踪之外,该正则表达式定义在一个新增的配置键mp.opentracing.server.skip-pattern中。正则表达式必须符合java.util.regex.Pattern。IBM Open Tracing知识中心详细说明了为什么排除JAX-RS请求跟踪:

可以通过指定跳过模式排除服务器端跟踪。你可能希望排除一些跟踪信息,以便跟踪特定的东西。在这种情况下,你可以选择排除服务器端跟踪,以减少所创建的Span数量。

新增的Open Tracing Span名称替代格式如下:

\u0026lt;http method\u0026gt;:/\u0026lt;endpoint\u0026gt;/\u0026lt;endpoint method\u0026gt;

如Open Liberty Open Tracing指南所示,下面是该格式的一个示例:

GET:/inventory/list

要了解更多细节,请查看Open Tracing规范。

JAX-RS的反应性扩展

使用Open Liberty 18.0.0.4,可以通过Apache CXF和Jersey等提供程序对JAX-RS(JSR-370)进行反应性扩展。在Open Liberty博客中,IBM Web服务架构师Andy McCright最近讨论了Open Liberty中的REST新特性:

JAX-RS 2.1引入了反应性客户端,但是规范只要求供应商使用Java 8的CompletionStage API实现它。其他反应性框架框架可以与反应性框架客户端集成,但在规范中这是可选的。借助Liberty 18.0.0.4,我们现在可以使用这些扩展。我们已经使用来自Apache CXF和Jersey的提供程序对RxJava 1和2进行了测试,我们计划进行更多测试。

IBM WebSphere MicroProfile和Jakarta EE(EE4J)架构师Kevin Sutter向InfoQ介绍了这个最新版本,以及2019年关于Open Liberty的计划。

InfoQ:在即将发布的Open Liberty版本中,为MicroProfile的当前版本提供全面支持是否遇到了挑战?

Kevin Sutter:Open Liberty曾经在Eclipse MicroProfile项目发布后的三个月内提供了完全支持的、可用于生产的MicroProfile规范实现。从项目的第一天起,我们就把这作为一个目标,并且我们很高兴能够遵守这个时间表。这有挑战性吗?当然。但是,这是一项大型的团队工作,这样更可行。我们参与每一项MicroProfile规范。有些是我们负责的,有些我们只是参与。但是,我们确实参与每一项规范。这给了我们一个优势,因为我们已经熟悉了各种规范的要求。在大多数情况下,在更广泛的MicroProfile团队正在继续定义它的时候,我们正在实现规范。在某些情况下,我们通过每月的Liberty Beta交付早期版本的实现。这些Beta版的反馈也可以反馈到规范的开发中。所有这些前期工作都有助于我们及时实现MicroProfile的目标。

MicroProfile规范发布的其中一个要求是有一个开源的“兼容实现”。这个兼容的实现不一定是最终的版本或产品。但是,它必须证明规范是可实现的,并且TCK在上面成功执行。此外,它必须可用、可构建,并且可以通过一些公共的开源存储库进行测试(如GitHub)。对于我们负责的大多数MicroProfile规范,我们在Open Liberty中开发兼容实现。一个例外是我们负责的MicroProfile Rest客户端项目,其兼容实现是Apache CXF。但是,由于Apache CXF是Open Liberty JAX-RS实现的基础,因此,我们仍然间接地在Open Liberty中进行开发。无论如何,这些兼容实现并不是最终的版本。我们还有额外的工作要做,以确保这些实现是生产就绪的,并且得到完全支持。但是,为把它们加入Open Liberty的下一个发行版中,我们有了一个很好的开端。

InfoQ:关于Open Liberty,2019年有什么计划?

Sutter:我们在2019年所做的一个主要改进是采用四周一次的发布周期(而不是过去几年的季度发布)。压缩后的发布周期对我们的MicroProfile开发工作提出了一些新的挑战。如你所知,MicroProfile每年都会发布几个版本。去年,MicroProfile发布了三个平台版本(包括对Java EE 8的支持)。今年的计划是在2月、6月和10月再发布三个平台版本。过去,我们的目标是在下一个季度的Open Liberty中支持这些MicroProfile版本。但是,在四周一次的发布周期中,“下一个Open Liberty版本”可能无法实现。因此,我们的新目标是在MicroProfile提供其平台版本之后进行两个为期两周的开发迭代。这实际上把我们之前在一个季度(12周)内提供实现的目标压缩到了大约8周。我们看看能不能跟上。但是,按照我们的敏捷流程,我们只会在功能准备就绪时发布它——完全测试、生产就绪和完全支持。

InfoQ:您目前负责什么,也就是说,您每天都做些什么?

Sutter:我的主要职责是为混合云组织的MicroProfile、Jakarta EE和Java EE总体开发提供指导。这就是我在“IBM的工作”。在外部,我非常积极地与MicroProfile社区合作,共同领导Eclipse项目。我参与了一些组件规范,但我的主要关注点是确保平台交付的顺利进行。我还参加了Jakarta EE指导和规范委员会。将Java EE工件和流程移到Eclipse环境中是一项具有挑战性的工作——保留好东西,删除不好的东西。作为PMC和平台项目的一员,我还参与了EE4J工作的日常活动。这方面的最新活动是完成Eclipse Glassfish的Java EE 8兼容性测试。下一步工作涉及Jakarta EE 8的发布及其未来规划。

相关资源

  • Open Liberty首次发布中的MicroProfile 1.2和构建工具升级,Laura Cowen,2017年10月26
  • 把你自己的JSF实现加入Open Liberty 17.0.0.4,Laura Cowen,2017年12月21日
  • 借助Open Liberty 18.0.0.1中的MicroProfile 1.3(等)实现微服务分布式跟踪,Laura Cowen,2018年3月16日
  • Open Liberty 18.0.0.2完全支持Java EE 8,Laura Cowen,2018年6月29日
  • 借助Open Liberty 18.0.0.3中的MicroProfile 2.0从App获取更多指标,Laura Cowen,2018年9月19日
  • Open Liberty in 2018提供了哪些REST新特性?,Andy McCright,2018年12月5日
  • 18.0.0.4中的MicroProfile 2.1、反应性扩展和连接池指标,Laura Cowen,2018年12月14日

查看英文原文:IBM Releases Open Liberty 18.0.0.4 with Support for MicroProfile 2.1 and Reactive Extensions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b700a怎么连蓝牙_233621蓝牙2.1无线音箱B700A小测

随着蓝牙技术的发展,使用蓝牙的相关产品也越来越多,各种蓝牙耳机、蓝牙键盘、蓝牙鼠标都让我们的外设摆脱了线材的束缚。小编之前也介绍过一款便携蓝牙音箱,也评测过一款蓝牙耳机,而今天拿到的是一款采用蓝牙2.1技术,造…

详解:设计模式之-适配器模式

分享一波:程序员赚外快-必看的巅峰干货 简介 在设计模式中,适配器模式有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 分类 …

excel 中编程:vba 入门

2019独角兽企业重金招聘Python工程师标准>>> 1. 打开编程环境: altF11 打开开发环境 注意需要启动宏,不然不能执行自定义的程序,保存后文件的后缀应该是:.xlsm 选择一个 sheet 或一个模块,右键查看代码&…

android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...

适使用范围: 安卓APP茄子快传源码 Android项目源码相似茄子快传的快传项目包括服务端运行环境: Android app源码详细:本项目是一个基于安卓的相似茄子快传的项目源码,包括安卓用户端源码,java的PC用户端和PHP 的web网…

详解:设计模式之-策略设计模式

分享一波:程序员赚外快-必看的巅峰干货 什么是策略模式 定义一系列的算法,并将每一个算法单独进行封装,而且使它们可以相互替换,从而达到传递不同参数而执行不同算法的结果。 策略模式让算法独立于使用它的客户而独立变化 策略模式应用场…

mysql decode语句_MySQL复制问题的分析

s这是学习笔记的第 2031 篇文章最近有个业务的MySQL复制问题还是比较多,做了事务降维之后,把一些敏感操作和线上环境隔离起来,整体的效果好了许多,不过今天在外面的时候,又收到一条报警短信,让我心里咯噔一…

jvm形象简介之一看就懂

分享一波:程序员赚外快-必看的巅峰干货 据 JVM 规范,JVM 内存结构共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。这里的java内存结构与前面所述的Java内存模型是两个概念,不可以混淆。 堆 java堆是java虚拟机所管理的内存中最大的一块…

MZOJ 1345 hero

一道宽搜模版题,可写错了两个地方的我只得了56(掩面痛哭) http://10.37.2.111/problem.php?id1345 先看看正确的 #include <bits/stdc.h> #define read read() #define up(i,l,r) for(int i l; i<r; i) using namespace std;int read {int x 0; char ch getchar()…

opencv拖动进度条_OpenCV GUI基本操作,回调函数,进度条,裁剪图像等-阿里云开发者社区...

代码为转载&#xff0c;出处找不到了&#xff0c;不贴了工具条进度条&#xff1a;// ConvertColor.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #pragma comment(lib,"opencv_core2410d.lib")#pragma comment(lib…

区间DP初探 P1880 [NOI1995]石子合并

https://www.luogu.org/problemnew/show/P1880 区间dp,顾名思义,是以区间为阶段的一种线性dp的拓展 状态常定义为$f[i][j]$,表示区间[i,j]的某种解; 通常先枚举区间长度,再枚举左端点,最后枚举断点(k) 石子合并便是一道经典的区间dp #include <bits/stdc.h> #define read…

jvm详解 - 新生代与老年代

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 Java 中的堆是 JVM 所管理的最大的一块内存空间&#xff0c;主要用于存放各种类的实例对象。 在 Java 中&#xff0c;堆被划分成两个不同的区…

pymysql建表_Python数据库操作,针对pymysql 和 MYSQL数据库

此文将以MYSQL数据库做为例子,pymysql库作为驱动进行学习安装MYSQL数据库与pymysql第三方库安装pymysql库不多做叙述安装navicat for mysql,此程序用来管理MYSQL数据库注意: 连接过程中可能会出现1251错误解决办法,在cmd命令下登录mysql后输入:ALTER USER rootlocalhost IDENTI…

从0到1使用VUE-CLI3开发实战(五):模块化VUEX及使用vuetify

小肆前几天发了一篇2019年Vue精品开源项目库的汇总&#xff0c;今天小肆要使用的是在UI组件中排行第三的Vuetify。vuetify介绍 Vuetify是一个渐进式的框架&#xff0c;完全根据Material Design规范开发&#xff0c;一共拥有80多个组件&#xff0c;对移动端支持非常好。 支持SSR…

详解垃圾回收算法

分享一波:程序员赚外快-必看的巅峰干货 标记清除算法 概念 该算法有两个阶段。 标记阶段&#xff1a;找到所有可访问的对象&#xff0c;做个标记。 清除阶段&#xff1a;遍历堆&#xff0c;把未被标记的对象回收 缺点&#xff1a;会产生碎片&#xff0c;不够连贯 应用场景…

智能情绪分析技术_石化缘推荐:炼化企业智能机器人巡检技术应用前景分析!...

本期内容由湖南天一奥星泵业有限公司冠名炼化企业智能机器人巡检技术应用前景分析王国彤1,孙秉才2,储胜利2,宋亚敏1(1.中国石油天然气股份有限公司大连石化分公司&#xff0c;辽宁省大连市&#xff1b;2.中国石油集团安全环保技术研究院有限公司&#xff0c;北京市)摘要&#x…

CentOS 7编译程序后的环境变量设置

今晚在 CentOS 7 上配置 Gitea&#xff0c;配置完成后在本地 clone 仓库会提示 Failed to execute git command: exec: "git-upload-pack": executable file not found in $PATH&#xff0c;果断用软连接打法解决。随后在 push 时又出现 Failed to execute git comma…

详解:JVM内存调优参数

分享一波:程序员赚外快-必看的巅峰干货 -Xms JVM启动时申请的初始Heap值&#xff0c;默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时&#xff0c;JVM会减小heap的大小到-Xms指定的大小&#xff0c;可通过-XX:MaxHeapFreeRation来指定这个比列。Server端JV…

数组指针 sizeof 实现_C++数组指针!

学习C数组的时候&#xff0c;对数组的了解不是很深。也不知道&#xff0c;为什么声明一个数组&#xff0c;int a[10]&#xff0c;为什么a就是数组的地址。你可以这样理解&#xff0c;将a理解为指向数组头的一个指针&#xff0c;这样就好理解了。理解了之后确实好像豁然开朗的样…

利用人工智能提升团队包容性

在2018年11月举行的Gartner应用技术与解决方案峰会上&#xff0c;高级主管分析师John Kostoulas认为&#xff0c;积极培养包容性文化的团队和团队领导者将超越他们的目标。Kostoulas引用了CEB-Gartner在2016年进行的一项领导力验证调查&#xff0c;他指出&#xff0c;性别多元化…

表单验证开发 - 登录注册开发(3)

表单验证开发 - 登录注册开发(3) 一、教程目标 学习如何在表单中添加验证规则。掌握使用 JSON 配置表单验证规则的方法。实现前端和后端的表单验证。 二、教程内容 1. 前端表单验证 步骤 1&#xff1a;找到表单编辑 在页面上找到需要编辑的表单&#xff0c;如注册表单或登录…