Open Liberty 23.0.0.7のAPIとSPIのJavadoc
Open Liberty 23.0.0.7のリリースと同時に、Open Liberty DocsのJavadocsが拡張され、Liberty固有のAPIとSPIが追加されました。 このアップデートにより、OpenID ConnectやOAuthなど、さまざまなLibertyの機能を使用するアプリケーションやカスタム機能の開発が簡素化されます。また、このリリースの一部として、複数のバグが修正されました。
In Open Liberty 23.0.0.7:
Open Liberty GAのリリースブログの記事もご参照ください。
23.0.0.7を使ってアプリを実行する
Mavenを使う時は下記の設定をお使いください。
<dependency>
<groupId>io.openliberty</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>23.0.0.7</version>
<type>zip</type>
</dependency>
Gradleの場合はこちらです。
dependencies {
libertyRuntime group: 'io.openliberty', name: 'openliberty-runtime', version: '[23.0.0.7,)'
}
コンテナ・イメージの場合はこちらです。
FROM icr.io/appcafe/open-liberty
またはダウンロード・ページをご参照ください。
Liberty APIとSPI Javadoc
Open Liberty 23.0.0.7リリース以前は、Liberty APIとSPIを扱う開発者は、ランタイムに同梱されている組み込みJavadocを使用するか、ソースから独自のJavadocを構築する必要がありました。 23.0.0.7から、APIとSPIのJavadocをMicroProfile、Jakarta EE、Java EEのJavadocと一緒にOpen Liberty Docsに追加しました。 また、23.0.0.6のJavadocも遡って追加しました。
ホストされているJavadocを使い始めるには、Open Liberty DocsのREFERENCEセクションにアクセスします。
主なバグ修正
以下のセクションでは、このリリースで修正したバグの一部について説明します。興味がある場合は、full list of bugs fixed in 23.0.0.7をご参照ください。
-
GlobalOpenTelemetry にパブリック・メソッドがない
Liberty は
GlobalOpenTelemetry
クラスをオーバーライドして、no-op を返します。 Liberty はユーザーがこのクラスを設定することを許可しておらず、代わりにOpenTelemetry
オブジェクトを取得するために CDI インジェクションを使用する必要がありました。しかし、このオーバーライドにはパブリック・メソッドがないため、呼び出すとエラーが発生します。 例えば
Caused by: java.lang.NoSuchMethodError: io/opentelemetry/api/GlobalOpenTelemetry.getPropagators()Lio/opentelemetry/context/propagation/ContextPropagators; (loaded from file:/home/gb110303/workspaces/open-liberty/dev/build.image/wlp/lib/io.openliberty.io.opentelemetry_1.0.77.jar by org.eclipse.osgi.internal.loader.EquinoxClassLoader@7be84dfc[io.openliberty.io.opentelemetry:1.0.77.202305162152(id=156)]) called from class io.opentelemetry.opentracingshim.OpenTracingPropagatorsBuilder (loaded from file:/home/gb110303/workspaces/open-liberty/dev/build.image/wlp/usr/servers/Telemetry10Shim/workarea/org.eclipse.osgi/52/data/cache/com.ibm.ws.app.manager_0/.cache/WEB-INF/lib/opentelemetry-opentracing-shim-1.19.0-alpha.jar by com.ibm.ws.classloading.internal.AppClassLoader@76e93c4a). at OpenTracingPropagatorsBuilder.<init>(OpenTracingPropagatorsBuilder.java:16) at OpenTracingPropagators.builder(OpenTracingPropagators.java:32) at OpenTracingShim.createTracerShim(OpenTracingShim.java:61) at OpenTracingShimServlet.createShim(OpenTracingShimServlet.java:46) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
この問題は解決され、`GlobalOpenTelemetry`のメソッドを呼び出すと、no-opの`OpenTelemetry`クラスにdelegateされるようになりました。
-
同じJWTアクセス・トークンをインバウンド・プロパゲーションに使用した場合、同時実行エラーが発生する
openidConnectClient-1.0
機能で構成されたサーバーで、インバウンド・プロパゲーションに同じ JWTアクセストークンを使用している場合、同時実行エラーが発生してリクエストが失敗します。このエラーによりConcurrentModificationException
が発生します。Stack Dump = java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:977) at java.util.LinkedList$ListItr.next(LinkedList.java:899) at javax.security.auth.Subject$SecureSet$1.next(Subject.java:1290) at com.ibm.ws.security.openidconnect.client.internal.AccessTokenCacheHelper.recreateSubject(AccessTokenCacheHelper.java:137) at com.ibm.ws.security.openidconnect.client.internal.AccessTokenCacheHelper.getCachedTokenAuthenticationResult(AccessTokenCacheHelper.java:51) at com.ibm.ws.security.openidconnect.client.AccessTokenAuthenticator.authenticate(AccessTokenAuthenticator.java:130) at com.ibm.ws.security.openidconnect.client.internal.OidcClientImpl.authenticate(OidcClientImpl.java:406)
この問題は解決され、`ConcurrentModificationException`は発生しなくなり、リクエストは成功するようになりました。
-
faces-4.0をMyFaces 4.0.1にアップデート
4.0.1 アップデートでは、以下の問題が修正されました。
-
MYFACES-4469 - "
FacesConfigurator.purgeConfiguration`で`java.lang.IllegalArgumentException
: object is not an instance of declaring class" が発生する -
MYFACES-4586 - [perf] リソース・バンドルがキャッシュされない
-
MYFACES-4588 - `faces.getClientWindow`がクライアントIDを取得しない
-
MYFACES-4590 - 複合コンポーネントで
PrimeFaces
FileUpload
を使用するとNullPointerException
が発生する -
MYFACES-4591 - [perf] 重複したCDI ELResolverを削除する。
-
MYFACES-4593 - 誤ったエラーリカバリー https://github.com/jakartaee/faces/issues/1800も参照
-
MYFACES-4594 - ウェブ・コンテキスト・パラメータ・ロギング — マルチスレッドの問題
-
MYFACES-4596 -
faces.ts
のスタイルタグは元の位置を保持しなければならない(スクリプトタグも同様) -
MYFACES-4599 - `org.apache.myfaces.SERIALIZE_STATE_IN_SESSION`へのJavadoc参照を削除
-
MYFACES-4584 - 4.0以降の
faces.js
/ts
の改良点なお、いくつかの問題は、MYFACES-4594のように、Libertyの以前のバージョンですでに解決されています。
-
今すぐOpen Liberty 23.0.0.7を入手する
Maven, Gradle, Docker, ダウンロード可能なアーカイブからも入手可能です。