back to all blogsSee all blog posts

Improved log filtering and more consumable stack traces in Open Liberty 22.0.0.7

image of author
Ryan Storey on Jul 5, 2022
Post available in languages:

Open Liberty 22.0.0.7 includes the addition of the application name to the LogRecordContext extension and a corresponding JSON logging field, as well as providing new logging functionality to join stack traces in logs so that they are output as a single log event and easier to consume. Also included in this release are several notable bug fixes and updates to our Open Liberty guides.

In Open Liberty 22.0.0.7:

Along with the new features and functions added to the runtime, we’ve also made updates to our guides.

View the list of fixed bugs in 22.0.0.7.

Run your apps using 22.0.0.7

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

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

Or for Gradle:

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

Or if you’re using Docker:

FROM open-liberty

Or take a look at our Downloads page.

Ask a question on Stack Overflow

Filter JSON logs on the application name

Previously, Liberty logs did not contain the application name in the LogRecordContext extension. If you were using a log analysis tool, such as the Elastic Logstash Kibana (ELK) stack, you couldn’t filter out application logs, since the JSON fields did not have a field for the application name.

In Open Liberty 22.0.0.7, when application log messages are logged and the application name is known, the application name is added to the LogRecordContext, with the key appName and the value being the application name that the message was logged from. When JSON logging is enabled, a new default JSON field (ext_appName) is added to the JSON application logs, which contains the application name that the log message was logged from.

You can use this function by enabling JSON logging support for your Liberty logs.

Example JSON logging snippet:

{
  "type":"liberty_message",
  "host":"localhost",
  "ibm_userDir":"\/wlp\/usr\/",
  "ibm_serverName":"test_json",
  "message":"TESTAP0001W: Test Message.",
  "ibm_threadId":"0000005d",
  "ibm_datetime":"2022-02-16T14:07:47.226-0500",
  "ibm_messageId":"BADAP0001W",
  "module":"com.ibm.ws.lumberjack.Message",
  "loglevel":"WARNING",
  "ibm_sequence":"1645038467226_000000000001F",
  "ext_appName":"TestApp",
  "ext_thread":"Default Executor-thread-31"
}

For more information, check out the JSON Logging and JSON Log Events list documentation.

Merge stack traces into a single log event

You can now configure the stack trace in Open Liberty logs to be more readable by printing stack traces as a single log event. Previously, each line of the stack trace, typically thrown by Throwable.printStackTrace() calls from the application, was printed as a separate event.

Now, you can configure Open Liberty to output the emitted stack trace as a single log event. This is useful when using third-party log analysis tools, such as the Elastic Logstash Kibana (ELK) stack, so that each stack trace is treated as a single event instead of multiple.

This configuration applies to the console output, console logs, messages log, and the trace logs. The following examples show the console output and the messages log when the stack traces are printed as separate events versus as a single event:

Console output without the stack traces joined:

[err] java.lang.ArithmeticException: divide by zero
[err]   at com.ibm.demo.MyResource.ex(MyResource.java:86)
[err]   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[err]   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[err]   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[err]   at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[err]   at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:656)
[err]   at [internal classes]
[err]   at javax.servlet.http.HttpServlet.service(HttpServlet.java:686)
[err]   at com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:96)
[err]   at [internal classes]
[err]   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[err]   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[err]   at java.base/java.lang.Thread.run(Thread.java:831)

Console output with the stack traces joined:

[err] java.lang.ArithmeticException: divide by zero
        at com.ibm.demo.MyResource.ex(MyResource.java:86)
        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)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:656)
        at [internal classes]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:686)
        at com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:96)
        at [internal classes]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:831)

messages.log output without the stack traces joined:

2022-04-06, 15:50:22:246 EDT] 00000047 SystemErr                                                    R java.lang.ArithmeticException: divide by zero
[2022-04-06, 15:50:22:247 EDT] 00000047 SystemErr                                                    R         at com.ibm.demo.MyResource.ex(MyResource.java:86)
[2022-04-06, 15:50:22:248 EDT] 00000047 SystemErr                                                    R         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2022-04-06, 15:50:22:249 EDT] 00000047 SystemErr                                                    R         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[2022-04-06, 15:50:22:250 EDT] 00000047 SystemErr                                                    R         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2022-04-06, 15:50:22:251 EDT] 00000047 SystemErr                                                    R         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[2022-04-06, 15:50:22:251 EDT] 00000047 SystemErr                                                    R         at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:656)
...

messages.log output with the stack traces joined:

[2022-04-06, 15:52:38:586 EDT] 00000077 SystemErr                                                    R java.lang.ArithmeticException: divide by zero
        at com.ibm.demo.MyResource.ex(MyResource.java:86)
        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)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:656)
        ...

messages.log output without the stack traces joined using JSON logging:

{"type":"liberty_message","host":"LAPTOP-JU4FJ7TJ","ibm_userDir":"C:\/devdir\/LibertiesFeb18\/open-liberty\/dev\/build.image\/wlp\/usr\/","ibm_serverName":"sj","message":"java.lang.ArithmeticException: divide by zero","ibm_threadId":"00000034","ibm_datetime":"2022-04-20T13:41:37.605-0400","module":"SystemErr","loglevel":"SystemErr","ibm_methodName":"","ibm_className":"","ibm_sequence":"1650476497605_0000000000069","ext_thread":"Default Executor-thread-2"}
{"type":"liberty_message","host":"LAPTOP-JU4FJ7TJ","ibm_userDir":"C:\/devdir\/LibertiesFeb18\/open-liberty\/dev\/build.image\/wlp\/usr\/","ibm_serverName":"sj","message":"\tat com.ibm.demo.MyResource.ex(MyResource.java:86)","ibm_threadId":"00000034","ibm_datetime":"2022-04-20T13:41:37.616-0400","module":"SystemErr","loglevel":"SystemErr","ibm_methodName":"","ibm_className":"","ibm_sequence":"1650476497616_000000000006A","ext_thread":"Default Executor-thread-2"}
{"type":"liberty_message","host":"LAPTOP-JU4FJ7TJ","ibm_userDir":"C:\/devdir\/LibertiesFeb18\/open-liberty\/dev\/build.image\/wlp\/usr\/","ibm_serverName":"sj","message":"\tat java.base\/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","ibm_threadId":"00000034","ibm_datetime":"2022-04-20T13:41:37.626-0400","module":"SystemErr","loglevel":"SystemErr","ibm_methodName":"","ibm_className":"","ibm_sequence":"1650476497626_000000000006B","ext_thread":"Default Executor-thread-2"}
...

messages.log output with the stack traces joined using JSON logging:

{"type":"liberty_message","host":"LAPTOP-JU4FJ7TJ","ibm_userDir":"C:\/devdir\/LibertiesFeb18\/open-liberty\/dev\/build.image\/wlp\/usr\/","ibm_serverName":"sj","message":"java.lang.ArithmeticException: divide by zero\r\n\tat com.ibm.demo.MyResource.ex(MyResource.java:86)\r\n\tat java.base\/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base\/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat java.base\/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base\/java.lang.reflect.Method.invoke(Method.java:566)\r\n\tat com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:656)\r\n\tat com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.performInvocation(LibertyJaxRsInvoker.java:160)\r\n\tat org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:101)\r\n\tat com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:273)\r\n\tat org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:213)\r\n\tat com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:444)\r\n\tat org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:112)\r\n\tat org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)\r\n\tat org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)\r\n\tat org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)\r\n\tat org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)\r\n\tat org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:277)\r\n\tat com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.invoke(AbstractJaxRsWebEndpoint.java:137)\r\n\tat com.ibm.websphere.jaxrs.server.IBMRestServlet.handleRequest(IBMRestServlet.java:146)\r\n\tat com.ibm.websphere.jaxrs.server.IBMRestServlet.doGet(IBMRestServlet.java:112)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:686)\r\n\tat com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:96)\r\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1258)\r\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:746)\r\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1227)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1011)\r\n\tat com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:75)\r\n\tat com.ibm.ws.webcontainer40.servlet.CacheServletWrapper40.handleRequest(CacheServletWrapper40.java:85)\r\n\tat com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:938)\r\n\tat com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:281)\r\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1184)\r\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:453)\r\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:412)\r\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:566)\r\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:500)\r\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:360)\r\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:327)\r\n\tat com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:167)\r\n\tat com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:75)\r\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:514)\r\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:584)\r\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:968)\r\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1057)\r\n\tat com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:245)\r\n\tat java.base\/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\r\n\tat java.base\/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\r\n\tat java.base\/java.lang.Thread.run(Thread.java:831)","ibm_threadId":"00000060","ibm_datetime":"2022-04-20T13:42:26.365-0400","module":"SystemErr","loglevel":"SystemErr","ibm_methodName":"","ibm_className":"","ibm_sequence":"1650476546365_0000000000099","ext_thread":"Default Executor-thread-38"}

This new functionality is enabled by configuring either a bootstrap property, an environment variable, or through the server.xml file. If configuration is present in all these options, the configuration follows Open Liberty’s standard precedence order: server.xml > bootstrap property > environment variable.

Configuration:

  • server.xml:

<logging stackTraceSingleEntry="true" />
  • bootstrap.properties:

com.ibm.ws.logging.stackTraceSingleEntry=true
  • server.env:

WLP_LOGGING_STACK_TRACE_SINGLE_ENTRY=true

For more information, see the entry for stackTraceSingleEntry in Configuration settings by source.

Notable bugs fixed in this release

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

  • The openapi-3.1 Liberty feature generates wrong property name for annotation @Schema

    The openapi-3.1 feature is used in Liberty to generate the Open API documents. We found that the @Schema annotation doesn’t work as expected. For example, when annotating a field as shown below:

        @Schema(name="asset_id", readOnly = true, required = true)
        private String assetId;

    The generated swagger doc .yaml file will contain the following:

    RelatedAsset:
      required:
      - assetId         <<----- name of the property in the "required" section is not correct
      - ...
      type: object
      properties:
        asset_id:       <<----- name of the property in the "properties" section is correct
          type: string
          readOnly: true
        ...

    Although the property is generated correctly in the properties section, it was not generated correctly in the required section. The expected name should be the name used in the @Schema annotation, i.e., asset_id. This issue has now been resolved so that the correct property name for the @Schema annotation is generated.

  • Transactions summary trace is missing

    We discovered that the TransactionSummary trace group was no longer working. This trace group provides ultra minimal trace for transaction creation and setRollbackOnly . When setting TransactionSummary=all trace, the regular Transaction=all trace is emitted. The trace was emitted only for transaction creation and setRollbackOnly. This trace group is used when identifying what started a transaction or what rolled back a transaction in very high throughput systems where regular trace would be too big. In this Open Liberty release, the transaction summary trace has been reinstated.

  • FeatureUtility only checks one Maven repository

    Previously, FeatureUtility only checked one Maven repository. The verbose output shows both repositories are configured, but the utility fails because it only checks Maven Central (the first repo in the properties file).

    ./featureUtility if helloWorld1 --verbose --noCache --featuresBom=test.user.test.osgi:hello-bom:1.0
    [2022-04-26, 20:45:20:780 EDT] Check following assets whether they were installed or not: [helloWorld1]
    [2022-04-26, 20:45:20:835 EDT] Using old resolve API
    [2022-04-26, 20:45:20:854 EDT] checkAssetsNotInstalled() ignore exception: CWWKF1259E: Unable to obtain the following assets: helloWorld1. Ensure that the specified assets are valid. To find the IDs of applicable assets, run the installUtility find command.
    [2022-04-26, 20:45:20:858 EDT] checkAssetsNotInstalled() cause of exception: Top level feature not resolved: resource=helloWorld1
    MissingRequirement [requirementName=helloWorld1, owningResource=null]
    
    [2022-04-26, 20:45:20:866 EDT] Initializing ...
    [2022-04-26, 20:45:20:869 EDT] Environment variables:
    [2022-04-26, 20:45:20:870 EDT] FEATURE_REPO_URL: null
    [2022-04-26, 20:45:20:872 EDT] FEATURE_REPO_USER: null
    [2022-04-26, 20:45:20:873 EDT] FEATURE_UTILITY_MAVEN_REPOSITORIES: []
    [2022-04-26, 20:45:20:874 EDT] FEATURE_REPO_PASSWORD: *********
    [2022-04-26, 20:45:20:875 EDT] FEATURE_LOCAL_REPO: null
    [2022-04-26, 20:45:20:878 EDT] Overriding the environment variables using featureUtility.properties
    [2022-04-26, 20:45:20:879 EDT] envmap before:
    [2022-04-26, 20:45:20:880 EDT] {FEATURE_REPO_URL=null, FEATURE_REPO_USER=null, FEATURE_UTILITY_MAVEN_REPOSITORIES=[], FEATURE_REPO_PASSWORD=null, FEATURE_LOCAL_REPO=null}
    [2022-04-26, 20:45:20:881 EDT] printing envmap after
    [2022-04-26, 20:45:20:882 EDT] {FEATURE_REPO_URL=null, FEATURE_REPO_USER=null, FEATURE_UTILITY_MAVEN_REPOSITORIES=[http://rhel8-install11.fyre.ibm.com:8081/repository/maven-central/, http://localhost:8081/repository/maven-central/], FEATURE_REPO_PASSWORD=null, FEATURE_LOCAL_REPO=null}
    [2022-04-26, 20:45:20:884 EDT] additional jsons: [test.user.test.osgi:features:1.0]
    [2022-04-26, 20:45:20:886 EDT] Features installed from the remote repository will not be cached locally
    [2022-04-26, 20:45:20:887 EDT] JSONs required: [com.ibm.websphere.appserver.features:features:22.0.0.3, io.openliberty.features:features:22.0.0.3, test.user.test.osgi:features:1.0]
    [2022-04-26, 20:45:20:889 EDT] Found the following jsons locally: [/Users/jiwoolim/.m2/repository/com/ibm/websphere/appserver/features/features/22.0.0.3/features-22.0.0.3.json]
    [2022-04-26, 20:45:20:890 EDT] Could not find all json files from local directories, now downloading from Maven..
    [2022-04-26, 20:45:20:894 EDT] Using 8 threads to download artifacts.
    [2022-04-26, 20:45:20:895 EDT] Using temp location: /Users/jiwoolim/Downloads/wlp22003open/tmp/
    [2022-04-26, 20:45:20:896 EDT] Testing connection for repository: http://rhel8-install11.fyre.ibm.com:8081/repository/maven-central/
    [2022-04-26, 20:45:24:883 EDT] Response code: 200
    [2022-04-26, 20:45:24:884 EDT] Connecting to the following repository: http://rhel8-install11.fyre.ibm.com:8081/repository/maven-central/
    [2022-04-26, 20:45:36:170 EDT] Successfully validated MD5 checksum for file: features-22.0.0.3.json
    [2022-04-26, 20:45:36:170 EDT] Using temp location: /Users/jiwoolim/Downloads/wlp22003open/tmp/
    [2022-04-26, 20:45:36:171 EDT] Testing connection for repository: http://rhel8-install11.fyre.ibm.com:8081/repository/maven-central/
    [2022-04-26, 20:45:36:308 EDT] Response code: 200
    [2022-04-26, 20:45:36:308 EDT] Connecting to the following repository: http://rhel8-install11.fyre.ibm.com:8081/repository/maven-central/
    [2022-04-26, 20:45:36:950 EDT] Could not download this json with maven coordinate: test.user.test.osgi:features:1.0
    [2022-04-26, 20:45:36:951 EDT] Downloaded the following json files from remote: [/Users/jiwoolim/Downloads/wlp22003open/tmp/io/openliberty/features/features/22.0.0.3/features-22.0.0.3.json]
    [2022-04-26, 20:45:36:952 EDT] action.exception.stacktrace: null
    [2022-04-26, 20:45:36:952 EDT] CWWKF1409E: Unable to find the following feature JSON files locally or on the configured Maven repository: [test.user.test.osgi:features:1.0].
    com.ibm.ws.install.InstallException: CWWKF1409E: Unable to find the following feature JSON files locally or on the configured Maven repository: [test.user.test.osgi:features:1.0].
    at com.ibm.ws.install.featureUtility.FeatureUtility.getJsonFiles(FeatureUtility.java:672)
    at com.ibm.ws.install.featureUtility.FeatureUtility.(FeatureUtility.java:164)
    at com.ibm.ws.install.featureUtility.FeatureUtility.(FeatureUtility.java:58)
    at com.ibm.ws.install.featureUtility.FeatureUtility$FeatureUtilityBuilder.build(FeatureUtility.java:808)
    at com.ibm.ws.install.featureUtility.cli.InstallFeatureAction.install(InstallFeatureAction.java:240)
    at com.ibm.ws.install.featureUtility.cli.InstallFeatureAction.execute(InstallFeatureAction.java:257)
    at com.ibm.ws.install.featureUtility.cli.InstallFeatureAction.handleTask(InstallFeatureAction.java:78)
    at com.ibm.ws.install.featureUtility.cli.FeatureAction.handleTask(FeatureAction.java:100)
    at com.ibm.ws.install.featureUtility.FeatureUtilityExecutor.main(FeatureUtilityExecutor.java:58)
    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)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.ibm.ws.kernel.boot.cmdline.UtilityMain.internal_main(UtilityMain.java:173)
    at com.ibm.ws.kernel.boot.cmdline.UtilityMain.main(UtilityMain.java:53)
    at com.ibm.ws.kernel.boot.cmdline.Main.main(Main.java:52)

    The utility showed it never attempted to download the JSONs from the custom repository. If the order is reversed in the file, then it fails not finding the JSONs for core Liberty features instead of the custom ones. Once all the files are available in the local m2 repo, the utility succeeded. This release ensures that if the user feature is not found on the first repo, it should continue to find it in the next repo listed on featureUtility.properties.

  • OpenIdConnectClient not working with proxy settings given in jvm.options

    A bug was discovered which meant that OpenIdConnectClient would not take proxy settings given in jvm.options, which would cause a connection timeout. The issue lied with creating a connection to the discoveryEndpointUrl. This issue has now been fixed updating the relevant code to use the useSystemPropertiesForHttpClientConnections attribute.

New and updated guides since the previous release

As Open Liberty features and functionality continue to grow, we continue to add new guides to openliberty.io on those topics to make their adoption as easy as possible. Existing guides also receive updates in order to address any reported bugs/issues, keep their content current, and expand what their topic covers.

Get Open Liberty 22.0.0.7 now