back to all blogsすべてのブログ投稿を表示

Open Liberty 23.0.0.7のAPIとSPIのJavadoc

image of author image of author
Michal Broz and 浅田 かおり (翻訳) 2023年7月25日
他言語版へのリンク: English ,

Open Liberty 23.0.0.7のリリースと同時に、Open Liberty DocsのJavadocsが拡張され、Liberty固有のAPIとSPIが追加されました。 このアップデートにより、OpenID ConnectやOAuthなど、さまざまなLibertyの機能を使用するアプリケーションやカスタム機能の開発が簡素化されます。また、このリリースの一部として、複数のバグが修正されました。

In Open Liberty 23.0.0.7:

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

またはダウンロード・ページをご参照ください。

Stack Overflowで質問する

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 DocsREFERENCEセクションにアクセスします。

主なバグ修正

以下のセクションでは、このリリースで修正したバグの一部について説明します。興味がある場合は、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を入手する