Open Liberty 19.0.0.4のIBMの最新月次リリースは、MicroProfile Reactive Streams Operators 1.0 API、JDK 12、およびOracle Universal Connection Poolのサポートを特徴としている。
2017年9月に最初に導入されたOpen Libertyは、IBMのWebSphere Libertyアプリケーションサーバのオープンソース実装であり、クラウドネイティブアプリケーションとマイクロサービスを構築するためのサーバランタイムを提供する。MicroProfileフレームワークとJava EE APIを完全にサポートしている。開発者は、Webアプリケーションおよびマイクロサービスを構築、パッケージ化、およびデプロイする方法の例を提供する入門ガイドを使用できる。
MicroProfile Reactive Streams Operators 1.0のサポート
Reactive Streamsは、フロー制御とエラー処理を提供する、ノンブロッキングバックプレッシャによる非同期ストリーム処理のための手段を提供する。これにより、パブリッシャは、コンシューマに負担をかけずに、無限の可能性があるデータストリームを作成できる。
サブスクライバは、受信したい量のデータを要求し、フローを制御して自分のペースでデータストリームを処理できる。MicroProfile Reactive Streams Operatorsは、Reactive Streams Publisher、Subscriber、およびProcessorのインスタンスを作成するための一連のビルダーを提供する。
さらに、データストリームを操作および変換するために、フィルタリングやマッピングなどの演算子が提供されている。Open Liberty 19.0.0.4でMicroProfile Reactive Streams Operators 1.0を有効にするには、server.xml
ファイルを更新する。
<featureManager>
<feature>mpReactiveStreams-1.0</feature>
</featureManager>
有効にすると、Reactive Streams Operators APIを使用してデータストリームを生成および消費することができる。次に、パブリッシャが注文をストリーミングし、サブスクライバがその注文を処理するためにストリームを消費する例を考える。
import org.eclipse.microprofile.reactive.streams.operators.CompletionRunner;
import org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder;
import org.eclipse.microprofile.reactive.streams.operators.ReactiveStreams;
import org.eclipse.microprofile.reactive.streams.operators.SubscriberBuilder;
PublisherBuilder<Order> orderPublisher = ReactiveStreams.of(order1, order2);
SubscriberBuilder<Order, List<Shipment>> fulfillmentSubscriber =
ReactiveStreams.<Order>builder()
.map(order -> new Fulfillment(order).packAndShip())
.toList();
CompletionRunner<List<Shipment>> result = orderPublisher.to(fulfillmentSubscriber);
JDK 12のサポート
Open Liberty 19.0.0.4は、新しいShenandoahガベージコレクタとswitch
式の構文を採用した、最近のJDK 12のリリースをサポートする。提案JEP 344およびJEP 346による既存のG1ガベージコレクタの改良もJDK 12に含まれている。注記として、機能リリースとして、JDK 12の標準サポートは2019年9月に終了する。
Oracle Universal Connection Pool (UCP) のサポート
Oracle Universal Connection Pool (UCP) は、データベース接続オブジェクトをキャッシュするためのJDBC接続プールを提供する。これにより、Oracle Real Application Clusters(RAC)のユーザは、Fast Connection Failover (FCF)、 Fast Application Notification (FAN)、Oracle Notification Services (ONS)など、オラクルの高可用性とパフォーマンス中心の機能を活用できる。
Open Liberty 19.0.0.4はUCPをサポートしており、server.xmlファイルを更新して機能マネージャ、データソース、およびUCPドライバパスを設定することで有効にできる。
<featureManager>
<feature>jdbc-4.2</feature>
<feature>jndi-1.0</feature> <!-- Required only if JNDI is desired to look up resources -->
</featureManager>
<dataSource id="oracleUCPDS" jndiName="jdbc/oracleUCPDS" >
<jdbcDriver libraryRef="OracleUCPLib" />
<properties.oracle.ucp URL="jdbc:oracle:thin:@//{host}:{port}/{db}" />
</dataSource>
<library id="OracleUCPLib">
<fileset dir="{path_to_driver}" includes="ojdbcx.jar ucp.jar"/>
</library>
UCP接続プールを使用すると、Open Libertyの組み込み接続プール機能が無効になる。その結果、一部のデータソースと接続マネージャの設定値は無視される。
今年の初め、InfoQはOpen Libertyの新しい4週間リリースのステップについて報告し、IBMでWebSphereのMicroProfile、およびJakarta EEアーキテクトKevin Sutterにインタビューした。