back to all blogsSee all blog posts

API and SPI Javadoc in Open Liberty 23.0.0.7

image of author
Michal Broz on Jul 25, 2023
Post available in languages: 日本語 ,

Concurrent with the Open Liberty 23.0.0.7 release, the Javadocs in the Open Liberty docs are expanded to include the Liberty-specific APIs and SPIs. This update simplifies developing applications and custom features that use various Liberty capabilities, like OpenID Connect and OAuth. Also, various bugs were fixed as part of this release.

In Open Liberty 23.0.0.7:

Run your apps using 23.0.0.7

If you’re using Maven, here are the coordinates:

<dependency>
    <groupId>io.openliberty</groupId>
    <artifactId>openliberty-runtime</artifactId>
    <version>23.0.0.7</version>
    <type>zip</type>
</dependency>

Or for Gradle:

dependencies {
    libertyRuntime group: 'io.openliberty', name: 'openliberty-runtime', version: '[23.0.0.7,)'
}

Or if you’re using container images:

FROM icr.io/appcafe/open-liberty

Or take a look at our Downloads page.

Ask a question on Stack Overflow

Liberty API and SPI Javadoc

Before the Open Liberty 23.0.0.7 release, developers who were working with Liberty APIs and SPIs had to use the embedded Javadoc that comes packaged with the runtime or build their own Javadocs from source. Starting with 23.0.0.7, we’ve added the API and SPI Javadoc to the Open Liberty Docs, alongside the Javadoc for MicroProfile, Jakarta EE, and Java EE. We’ve also retroactively added the Javadoc for 23.0.0.6.

To start using the hosted Javadoc, navigate to the REFERENCE section of the Open Liberty Docs.

Notable bugs fixed in this release

We’ve spent some time fixing bugs. The following sections describe just some of the issues resolved in this release. If you’re interested, here’s the full list of bugs fixed in 23.0.0.7.

  • GlobalOpenTelemetry is missing public methods

    Liberty overrides the GlobalOpenTelemetry class to return a no-op. Liberty does not allow users to set the class and, instead, CDI injection should be used to acquire an OpenTelemetry object.

    However the override is missing public methods, which causes an error to occur if called. For example:

    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)

    This issue now resolved and calling a method on GlobalOpenTelemetry delegates to the no-op OpenTelemetry class.

  • Concurrency errors when using same JWT access token for inbound propagation

    For a Liberty server configured with the`openidConnectClient-1.0` feature and using the same JWT access token for inbound propagation for multiple requests, a concurrency error occurs that causes the requests to fail. This error results in a 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)

    This issue has been resolved. The ConcurrentModificationException is not longer thrown and the requests succeed.

  • Update faces-4.0 to MyFaces 4.0.1

    The following issues are fixed in the 4.0.1 update:

    Note that some issues have already been addressed in earlier versions of Liberty, such as MYFACES-4594.

Get Open Liberty 23.0.0.7 now