IBM TechXchange Japan WebSphere User Group (日本WebSphereユーザーグループ)

IBM TechXchange Japan WebSphere User Group (日本WebSphereユーザーグループ)

 View Only

Open Liberty / WebSphere Liberty最新情報:2022年1月〜5月

By Takakiyo Tanaka posted Mon June 13, 2022 02:55 AM

  

OSSのエンタープライズJavaアプリケーションサーバーOpen Libertyならびに,その製品版のWebSphere Libertyの,バージョン22.0.0.1から22.0.0.5までの新機能についてご紹介します。

同じ内容をQiita上でも公開しています。

API

MicroProfile 5.0対応

2021年12月に公開されたMicroProfile 5.0に,1月に出た22.0.0.1で対応しました。

今回のUpdateは全てがオレンジ色で,原則全てのパッケージがアップデートされています。Jakarta EE 9.0の名前空間の変更(javax→jakarta)に対応しているためです。詳細な変更点については,Eclipse Foundationのプレゼンテーションを参照ください。

CommonJ WorkManagerのサポート

Libertyランタイムでは,従来のWebSphere traditionalランタイムで提供されていたAPIのうち,古い非推奨となったAPIや独自APIなど,いくつかサポートしていないAPIがあります。そのようなAPIを使用しているアプリケーションは,Libertyへ移行する際に大きな書き換えが必要となっています。

その一つがCommonJでした。これはJava EEアプリケーションで非同期処理を実装するために提供されていたIBM独自のAPIです。Java EE標準で同等の機能がConcurrency Utilities for Java EEとして提供されたため,非推奨となりました。

CommonJはLibertyランタイムには実装されいなかったのですが,Heritage プログラミング・モデルとして提供されるようになりました。heritageAPIs-1.1およびconcurrent-1.0フィーチャーを有効にすれば,従来のCommonJを使用したアプリケーションが,そのままLibertyランタイムの上で稼働するようになります。

もちろん,これから新規に作成するアプリケーションでは,CommonJではなく,Concurrency Utilities for Java EEを使用するようにしてください。

Core Runtime

server.envの変数対応

Libertyランタイムのプロセスから参照可能な環境変数を設定するのがserver.envファイルです。通常はserver.xmlと同じディレクトリに置かれます。

このファイルの中では,変数の展開はおこなわれません。そのため,

hostname=a.b.com
url=http://${hostname}:9080

というような設定をおこなっても,urlはhttp://${hostname}:9080になってしまいます。22.0.0.1から,# enable_variable_expansionというコメント行を追加することにより,変数の展開がおこなわれるようになりました。

# enable_variable_expansion
hostname=a.b.com
url=http://${hostname}:9080

と構成することによりurlはhttp://a.b.com:9080という値に設定されるようになります。ただし,この挙動はプラットフォーム依存です。Windows環境では正常に動作しません。Windows環境で変数を展開したい場合は,以下のように感嘆符で変数名をくくる必要があります。

# enable_variable_expansion
hostname=a.b.com
url=http://!hostname!:9080

JVMのワーキングディレクトリ

LibertyのJVMプロセスは,`WLP_OUTPUT_DIR`環境変数(デフォルトでは`${wlp.install.dir}/usr/servers`)で指定されたディレクトリの下のサーバー名のディレクトリをカレントディレクトリにして実行されています。

このカレントワーキングディレクトリを環境変数`SERVER_WORKING_DIR`で変更できるようになりました。相対パスで指定した場合にはデフォルトからの相対パス,絶対パスを指定した場合には,そのディレクトリが使用されます。

Java 18サポート

4月に出た22.0.0.4から,Java SE 18環境での実行がサポートされるようになりました。

Security

配布パッケージの署名

Open LibertyならびにWebSphere Libertyの配布パッケージに,署名ファイル(sigファイル)が添付されるようになりました。IBMから提供されている公開鍵を使用して,以下のように配布ファイルを検証することができます。

% openssl dgst -sha256 -verify public_key.pem \
-signature wlp-base-all-22.0.0.6.jar.sig \
wlp-base-all-22.0.0.6.jar
Verified OK

Log4Shell脆弱性への対応

Libertyの持つクラスローダーに,脆弱性を持つ既知のクラスのロードをブロックする機能が追加されました。現在はorg.apache.logging.log4j.core.lookup.JndiLookupという名前のクラスのロードが拒否されるようになっています。これにより,Liberty上で稼働するLog4jを使ったアプリケーションが,Log4Shell脆弱性(CVE-2021-44228)から保護されます。

JWE for OpenID Connectのサポート

認証情報などを送受信するときに使用されるJWT(JSON Web Token)フォーマットで,内容を暗号化して送受信する仕組みがJWE(Web Encryption)です。OpenID Connect Client 1.0フィーチャーやSocial Media Login 1.0フィーチャーで,暗号化されたJWEの使用ができるようになりました。詳細については,Open Liberty Blogのアップデートを参照してください。

Developer Experience

JAX-RPCアプリケーションの変換ツール

SOAP通信によるシステム間連携を実装するためのJavaのAPIとしては,最初に出たJAX-RPC仕様と,後から出た改良された仕様であるJAX-WSの二種類があります。現在はJAX-RPCは非推奨となり,JAX-WSの利用が推奨されています。LibertyでもJAX-WSは利用できますが,JAX-RPCの利用はサポートされていません。そのため,JAX-RCPを使用したアプリケーションをLibertyで実行するためには,アプリケーションを大きく書き変える必要があり,Libertyランタイムへ移行する際の障壁の一つとなっていました。

このJAX-RPCからJAX−WSへの変換を自動でおこなうWebSphere Liberty JAX-RPC Conversion Tool for Maven and Gradleが提供されています。使用方法については,こちらから参照してください。

Paketo Buildpackの提供

Dockerfileなどを記述しなくてもアプリケーションを実行するコンテナイメージを作成できるBuildpackを提供するOSSプロジェクト,Paketo。Libertyを利用してアプリケーションを実行できるBuildpackが提供されていいます。こちらから利用できます。

利用方法については,Open Liberty Blogの記事を参照してください。

0 comments
7 views

Permalink