Skip to content

Commit f10f2ea

Browse files
Merge pull request #7393 from OpenLiberty/staging
Staging to vNext 24.0.0.6 issues
2 parents 1d47123 + 8dd0886 commit f10f2ea

File tree

12 files changed

+147
-24
lines changed

12 files changed

+147
-24
lines changed

modules/ROOT/pages/distributed-session-caching.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ HTTP session cache data is distributed across multiple servers that act as a clu
2525
The feature:sessionCache[display=JCache Session Persistence feature] builds on an existing technology called link:https://hazelcast.com/glossary/jcache-java-cache/[JCache] that offers a standardized distributed in-memory caching API.
2626
Though the feature builds on JCache, your application doesn't need to use the JCache API.
2727
Open Liberty handles the session caching in the web container layer.
28-
For more information about how Open Liberty handles HTTP session data, see the link:https://openliberty.io/docs/21.0.0.5/reference/javadoc/liberty-javaee8-javadoc.html#javax/servlet/http/HttpSession.html[HttpSession interface].
28+
For more information about how Open Liberty handles HTTP session data, see the link:/docs/latest/reference/javadoc/liberty-jakartaee10-javadoc.html?package=jakarta/servlet/package-frame.html&class=jakarta/servlet/http/HttpSession.html[HttpSession interface].
2929

3030
== Session caching in your application
3131

modules/ROOT/pages/instanton-limitations.adoc

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
In addition to the general InstantOn prerequisites, Open Liberty InstantOn is subject to certain limitations. For example, applications that must run early startup code or that rely on certain Liberty features might require modification to use InstantOn.
1717

18-
For more information about InstantOn prerequisites, see xref:instanton.adoc#prereq[Runtime and host build system prerequisites].
18+
For more information about InstantOn prerequisites, see xref:instanton.adoc#prereq[Runtime and host build system prerequisites].
1919

2020
The following sections describe the limitations and known issues with using Open Liberty InstantOn.
2121

@@ -33,6 +33,7 @@ The following sections describe the limitations and known issues with using Open
3333
- <<#linux-calls,Access to Linux system calls>>
3434
- <<#linux, Running without the necessary Linux capabilities>>
3535
- <<#processors, Supported processors>>
36+
- <<#connectors, Jakarta Connectors work submission before checkpoint>>
3637
3738
[#transaction]
3839
== Jakarta Transactions configuration limitations
@@ -77,14 +78,14 @@ This `Servlet` example uses the `loadOnStartup = 1` attribute. When you use this
7778

7879
[source,text]
7980
----
80-
[WARNING ] WTRN0155W: An application began or required a transaction during the server checkpoint request. The following stack trace for this thread was captured when the transaction was created:
81+
[WARNING ] WTRN0155W: An application began or required a transaction during the server checkpoint request. The following stack trace for this thread was captured when the transaction was created:
8182
----
8283

8384
This warning is followed by a stacktrace that helps identify the application code that is attempting to begin a transaction. The server then fails to checkpoint and the following error is logged:
8485

8586
[source,text]
8687
----
87-
WTRN0154E: The server checkpoint request failed because the transaction service is unable to begin a transaction.
88+
WTRN0154E: The server checkpoint request failed because the transaction service is unable to begin a transaction.
8889
----
8990

9091
You can avoid this failure by using the `beforeAppStart` option or by modifying the component not to use early startup code. In this example, that modification is to remove the `loadOnStartup = 1` attribute.
@@ -166,7 +167,7 @@ If an application is injected with a `DataSource` before the checkpoint and the
166167
== Accessing MicroProfile Config properties with no default value at checkpoint
167168
An application injected with a configuration property that has no default value set in any configuration source might cause errors during checkpoint. This section provides solutions for common errors that are encountered.
168169

169-
A configuration property can be introduced into the application either statically or dynamically, and in either case, the property can be declared optional. The following example shows ways to inject static, static-optional, dynamic, and dynamic-optional configuration properties.
170+
A configuration property can be introduced into the application either statically or dynamically, and in either case, the property can be declared optional. The following example shows ways to inject static, static-optional, dynamic, and dynamic-optional configuration properties.
170171
[source,java]
171172
----
172173
@Inject
@@ -214,7 +215,7 @@ Specify a default value in a `variable` element in the server.xml` file::
214215
<variable name="static_config" defaultValue="defaultValue" />
215216
----
216217
217-
If no default value is set, you can still avoid the previous error by injecting configuration with the `static_optional_config`, `dynamic_config`, or `dynamic_optional_config` properties.
218+
If no default value is set, you can still avoid the previous error by injecting configuration with the `static_optional_config`, `dynamic_config`, or `dynamic_optional_config` properties.
218219
However, the following error might occur if you use the checkpoint option with CDI beans that are `@ApplicationScoped` and the `dynamic_config` is accessed too early during application startup:
219220
[source,sh]
220221
----
@@ -280,7 +281,7 @@ To work around this limitation, you can either enable the `virt_sandbox_use_netl
280281
If link:https://www.kernel.org/doc/Documentation/security/Yama.txt[Yama] is configured with one of the following modes, InstantOn cannot checkpoint or restore the application process in running containers:
281282
282283
- `2` - admin-only attach
283-
- `3` - no attach
284+
- `3` - no attach
284285
285286
When this configuration is present, the `/logs/checkpoint/restore.log` contains the following error:
286287
@@ -363,3 +364,67 @@ The `Operation not permitted` message is an indication that the required Linux c
363364
== Supported processors
364365
Currently, the only supported processor is X86-64/AMD64. Other processors are expected to be supported in later releases of Open Liberty InstantOn.
365366
367+
[#connectors]
368+
== Jakarta Connectors work submission before checkpoint
369+
370+
Open Liberty InstantOn does not allow resource adapters to submit work nor create timer tasks that schedule periodic work before a checkpoint is performed for the application process. This scenario is possible when the `afterAppStart` option is configured and the resource adapter has xref:instanton.adoc#beforeAppStart[early startup code] that attempts to submit work or create a timer by using the bootstrap context facilities provided by the runtime.
371+
372+
In such cases, the server fails the checkpoint and logs an error. You can avoid these failures by using the xref:instanton.adoc#beforeAppStart[beforeAppStart] option.
373+
374+
Consider the following JavaBean resource adapter code. The `start()` method is invoked when the server starts the resource adapter, which occurs before the checkpoint if you use the `afterAppStart` option.
375+
376+
[source,java]
377+
----
378+
public class StartupExample implements ResourceAdapter {
379+
BootstrapContext bootstrapCtx = null;
380+
381+
@Override
382+
public void start(BootstrapContext ctx) {
383+
bootstrapCtx = ctx;
384+
WorkManager workMgr = bootstrapCtx.getWorkManager();
385+
...
386+
387+
// work submission is not allowed before checkpoint
388+
try {
389+
workMgr.scheduleWork(new ExampleWork()); // same for doWork() and startWork()
390+
} catch (WorkRejectedException wre) {}
391+
392+
// timer creation is not allowed before checkpoint
393+
try {
394+
Timer timer = bootstrapCtx.createTimer();
395+
} (UnavailableException ue) {}
396+
...
397+
}
398+
----
399+
400+
=== Error submitting work
401+
402+
When a resource adapter attempts to submit work before checkpoint, the work manager throws a `WorkRejectedException` with the `J2CA8602E` message that identifies the resource adapter and the rejected work instance:
403+
404+
[source,console]
405+
----
406+
J2CA8602E: The ExampleWork work that was submitted by the StartupExample resource adapter was rejected during the server checkpoint request.
407+
----
408+
409+
The server then fails the checkpoint and logs the following error:
410+
411+
[source,console]
412+
----
413+
J2CA8601E: The server checkpoint request failed because the StartupExample resource adapter submitted work ExampleWork.
414+
----
415+
416+
=== Error creating a timer
417+
418+
When a resource adapter attempts to create a timer before checkpoint, the `createTimer()` method throws an `UnavailableException` with the following `J2CA8512E` message that identifies the resource adapter:
419+
420+
[source,console]
421+
----
422+
J2CA8512E: A timer could not be created for the StartupExample resource adapter during the server checkpoint request.
423+
----
424+
425+
The server then fails the checkpoint and logs the following error:
426+
427+
[source,console]
428+
----
429+
J2CA8511E: The server checkpoint request failed because the StartupExample resource adapter created a timer.
430+
----

modules/ROOT/pages/instanton.adoc

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -384,28 +384,39 @@ You can individually enable the Open Liberty public features that are enabled by
384384

385385
In addition to the features that are enabled in the MicroProfile and Jakarta convenience features, InstantOn also supports the following features:
386386

387+
388+
- feature:appSecurity-1.0[]
387389
- feature:audit-1.0[]
388390
- feature:bells-1.0[]
391+
- feature:connectors-2.0[]
392+
- feature:connectors-2.1[]
393+
- feature:crac-1.4[]
389394
- feature:distributedMap-1.0[]
390395
- feature:federatedRegistry-1.0[]
396+
- feature:javaMail-1.6[]
397+
- feature:jaxws-2.2[]
398+
- feature:jca-1.7[]
399+
- feature:jdbc-4.1[]
400+
- feature:jdbc-4.3[]
401+
- feature:jms-2.0[]
391402
- feature:ldapRegistry-3.0[]
403+
- feature:localConnector-1.0[]
404+
- feature:mail-2.0[]
405+
- feature:mail-2.1[]
406+
- feature:mdb-3.2[]
407+
- feature:mdb-4.0[]
408+
- feature:messaging-3.0[]
392409
- feature:monitor-1.0[]
393410
- feature:openidConnectClient-1.0[]
411+
- feature:passwordUtilities-1.0[]
394412
- feature:passwordUtilities-1.1[]
395413
- feature:restConnector-2.0[]
414+
- feature:sessionCache-1.0[]
396415
- feature:sessionDatabase-1.0[]
397416
- feature:socialLogin-1.0[]
417+
- feature:springBoot-3.0[]
398418
- feature:webCache-1.0[]
399-
- feature:jaxws-2.2[]
400419
- feature:xmlWS-3.0[]
401420
- feature:xmlWS-4.0[]
402-
- feature:appSecurity-1.0[]
403-
- feature:javaMail-1.6[]
404-
- feature:mail-2.0[]
405-
- feature:mail-2.1[]
406-
- feature:jdbc-4.1[]
407-
- feature:jdbc-4.3[]
408-
- feature:localConnector-1.0[]
409-
- feature:passwordUtilities-1.0[]
410421

411422
For more information about limitations, see xref:instanton-limitations.adoc[InstantOn limitations and known issues].

modules/ROOT/pages/jakarta-ee.adoc

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,20 @@ image::jakarta-ee-ol-2.png[diagram that shows the relationship between Jakarta E
3838

3939
[#platform]
4040
=== Platform versions
41-
Java SE evolved through a series of versions as more classes were added to the JCL, new APIs were introduced, and some older functions were deprecated and replaced. Currently, the only versions of Java SE that are maintained with long-term support (LTS) are Java SE 8, Java SE 11, and Java SE 17. In between LTS releases, Oracle introduces short-term support releases, such as Java 16. These short-term releases are supported for only 6 months. For more information about which versions of Java SE Open Liberty runs on, see xref:java-se.adoc[Java SE support].
41+
Java SE evolved through a series of versions as more classes were added to the JCL, new APIs were introduced, and some older functions were deprecated and replaced. Currently, the following versions of Java SE are maintained with long-term support (LTS):
42+
43+
* Java SE 8
44+
* Java SE 11
45+
* Java SE 17
46+
* Java SE 21
47+
48+
In between LTS releases, Oracle introduces short-term support releases, such as Java 16. These short-term releases are supported for only 6 months. For more information about which versions of Java SE Open Liberty runs on, see xref:java-se.adoc[Java SE support].
4249

4350
Java EE, which is now the open source Jakarta EE platform, has also evolved over a series of versions:
4451

45-
* Java EE 8 was the last release of the platform by the Oracle corporation before it was moved to the Eclipse foundation, which first released the platform as Jakarta EE 8.
46-
* Jakarta EE 9 arrived in 2020. The primary change in this release was to replace `javax` with `jakarta` in Jakarta package names.
47-
* In February 2021, Jakarta EE 9.1 was released. Although this release did not include any API changes from version 9.0, it added support for Java SE 11.
52+
* Java EE 8 was the last release of the platform by the Oracle corporation before it was moved to the Eclipse foundation, which first released the platform as Jakarta EE 8.
53+
* Jakarta EE 9 arrived in 2020. The primary change in this release was to replace `javax` with `jakarta` in Jakarta package names.
54+
* In February 2021, Jakarta EE 9.1 was released. Although this release did not include any API changes from version 9.0, it added support for Java SE 11.
4855
* In September 2022, Jakarta EE 10 was released. This release included many API changes and dropped support for Java SE 8.
4956

5057
== Jakarta EE specifications

modules/ROOT/pages/java-se.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ The following table lists the Java SE versions that Open Liberty supports and pr
7575
|22
7676
|No
7777
|Because Java 22 is not an LTS release, Open Liberty supports it only until Java 23 is released.
78-
|IBM Semeru 22 (coming soon)
78+
|link:https://developer.ibm.com/languages/java/semeru-runtimes/downloads/?version=22[IBM Semeru 22]
7979
|https://adoptium.net/temurin/releases/?version=22[Eclipse Temurin 22]
8080
|https://docs.oracle.com/en/java/javase/22/migrate/getting-started.html[Java SE 22 migration guide]
8181
|===

modules/ROOT/pages/security-vulnerabilities.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ The `CWWKF0012I` message uses the word "installed", but it lists features that a
2828
|===
2929
|CVE |CVSS score by X-Force® |Vulnerability assessment |Versions affected |Version fixed |Notes
3030

31+
|http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22354[CVE-2024-22354]
32+
|7.0
33+
|XML External Entity (XXE) injection
34+
|17.0.0.3 - 24.0.0.5
35+
|24.0.0.6
36+
|
37+
3138
|http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-27268[CVE-2024-27268]
3239
|5.9
3340
|Denial of service

modules/ROOT/pages/transaction-service.adoc

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,19 @@ To monitor peers, servers must be configured so that their transaction logs are
8585

8686
The use of a shared file system for this purpose, such as an RWX persistent volume in a Kubernetes cluster, is explicitly not supported where the file system crosses data centers. This limitation is due to the difficulty of implementing POSIX locking semantics in such a configuration. Under these circumstances, the transaction service must be configured to use a relational database for its transaction logs. For more information, see the <<#log,Transaction log management>> section.
8787

88+
=== Considerations when using a proxy server
89+
90+
The older alternative to peer recovery in a cloud environment is to route WS-AtomicTransaction traffic through a proxy server by specifying the `externalURLPrefix` attribute in the `server.xml` using the pod IP address, as shown in the following in the example:
91+
92+
[source,xml]
93+
----
94+
<wsAtomicTransaction
95+
...
96+
externalURLPrefix="https://${env.POD_IP}:9443"
97+
/>
98+
----
99+
100+
In some Kubernetes environments, this setting might cause intermittent socket timeout exceptions when non-WS-AtomicTransaction traffic communicates through a Kubernetes service to the same destination pod on the same port. To avoid these timeouts, add another config:httpEndpoint[display=HTTP Endpoint] with a different port that is solely for `externalURLPrefix` traffic. Then, add another `hostAlias` attribute for this port in the config:virtualHost[display=Virtual Host] configuration and set the `externalURLPrefix` attribute to this new port.
88101

89102
[#log]
90103
== Transaction log management
@@ -110,7 +123,9 @@ To store your Open Liberty transaction logs in an RDBMS, you can configure a ded
110123
</library>
111124
----
112125

113-
The `false` value for the `transactional` attribute specifies that the datasource is non-transactional. Transaction logs can be written to this data source, but it does not participate in transactions.
126+
The `false` value for the `transactional` attribute specifies that the data source is non-transactional. Transaction logs can be written to this data source, but it does not participate in transactions.
127+
128+
When you configure a non-transactional data source to store transaction logs, you must not change the value of the `syncQueryTimeoutWithTransactionTimeout` attribute from the default, which is `false`.
114129

115130
If you store transaction logs in an RDBMS, each server must have its own tables. You can specify a unique table suffix by using the `transactionLogDBTableSuffix` attribute for the `transaction` element. The value for this attribute is a string that is appended to the table name to make it unique to the server where the table is hosted. In the previous example, `MyServer1` is added as a suffix to any table names that are created for this server in an RDBMS.
116131

modules/ROOT/pages/troubleshooting.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ If you want to find solutions to security related issues , the following informa
1919
- <<#Troubleshooting_Kerberos, Troubleshooting Kerberos authentication to LDAP servers>>
2020
* <<#Troubleshooting_SSO, Troubleshooting SSO>>
2121
* <<#Troubleshooting_SSL, Troubleshooting SSL and TLS>>
22+
* <<#Troubleshooting_TAI, Troubleshooting TAI>>
2223
* <<#Other_troubleshooting, Other troubleshooting issues>>
2324
2425
[#Troubleshooting_ACME]
@@ -272,6 +273,12 @@ Exception thrown while trying to read configuration and update ManagedServiceFac
272273
This error occurs when a keystore element exists in the configuration without an ID field.
273274
If you use a minimal TLS configuration, set the `ID` field to `defaultKeyStore`.
274275

276+
[#Troubleshooting_TAI]
277+
== Troubleshooting Trust Association Interceptor
278+
279+
When you configure the `TrustAssociationInterceptor` component to call the `InitialDirContext` class, the `java.naming.ldap.factory.socket` property must be set to the `com.ibm.ws.ssl.protocol.LibertySSLSocketFactory` Liberty socket factory. Setting this property to other factories can cause a `NoClassDefFoundException`.
280+
281+
275282
[#Other_troubleshooting]
276283
== Other troubleshooting issues
277284

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
These APIs integrate with the Liberty xref:ROOT:instanton.adoc[InstantOn support].
2+
3+
The link:https://javadoc.io/doc/org.crac/crac/1.4.0/index.html[org.crac] package provides APIs for receiving checkpoint/restore notifications. These notifications enable applications to perform actions before they checkpoint an application process and after they restore the application process. For example, this package allows Spring-based applications to support checkpoint and restore. The use of `org.crac` is not limited to Spring-based applications. Any application that runs on Liberty can choose to receive checkpoint/restore notifications by enabling this feature.

modules/reference/pages/feature/springBoot-1.5/description.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11

2+
## Spring Boot Starters
3+
24
link:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters[Spring Boot Starters] are a set of convenient dependency descriptors provided by the Spring Boot that you can include in your application. When you use these starters with a Spring Boot application that is deployed on Open Liberty, you might need to enable features beyond the Spring Boot Support feature. The following table lists the Open Liberty features that are required to support certain Spring Boot 1.5 starters.
35

46
.Open Liberty features that support Spring Boot 1.5 starters

modules/reference/pages/feature/springBoot-2.0/description.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11

2+
## Spring Boot Starters
3+
24
link:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters[Spring Boot Starters] are a set of convenient dependency descriptors provided by the Spring Boot that you can include in your application. When you use these starters with a Spring Boot application that is deployed on Open Liberty, you might need to enable features beyond the Spring Boot Support feature. The following table lists the Open Liberty features that are required to support certain Spring Boot 2.0 starters.
35

46
.Open Liberty features that support Spring Boot 2.0 starters

0 commit comments

Comments
 (0)