You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/ROOT/pages/distributed-session-caching.adoc
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ HTTP session cache data is distributed across multiple servers that act as a clu
25
25
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.
26
26
Though the feature builds on JCache, your application doesn't need to use the JCache API.
27
27
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].
Copy file name to clipboardExpand all lines: modules/ROOT/pages/instanton-limitations.adoc
+71-6Lines changed: 71 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@
15
15
16
16
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.
17
17
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].
19
19
20
20
The following sections describe the limitations and known issues with using Open Liberty InstantOn.
21
21
@@ -33,6 +33,7 @@ The following sections describe the limitations and known issues with using Open
33
33
- <<#linux-calls,Access to Linux system calls>>
34
34
- <<#linux, Running without the necessary Linux capabilities>>
35
35
- <<#processors, Supported processors>>
36
+
- <<#connectors, Jakarta Connectors work submission before checkpoint>>
36
37
37
38
[#transaction]
38
39
== Jakarta Transactions configuration limitations
@@ -77,14 +78,14 @@ This `Servlet` example uses the `loadOnStartup = 1` attribute. When you use this
77
78
78
79
[source,text]
79
80
----
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:
81
82
----
82
83
83
84
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:
84
85
85
86
[source,text]
86
87
----
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.
88
89
----
89
90
90
91
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
166
167
== Accessing MicroProfile Config properties with no default value at checkpoint
167
168
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.
168
169
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.
170
171
[source,java]
171
172
----
172
173
@Inject
@@ -214,7 +215,7 @@ Specify a default value in a `variable` element in the server.xml` file::
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.
218
219
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:
219
220
[source,sh]
220
221
----
@@ -280,7 +281,7 @@ To work around this limitation, you can either enable the `virt_sandbox_use_netl
280
281
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:
281
282
282
283
- `2` - admin-only attach
283
-
- `3` - no attach
284
+
- `3` - no attach
284
285
285
286
When this configuration is present, the `/logs/checkpoint/restore.log` contains the following error:
286
287
@@ -363,3 +364,67 @@ The `Operation not permitted` message is an indication that the required Linux c
363
364
== Supported processors
364
365
Currently, the only supported processor is X86-64/AMD64. Other processors are expected to be supported in later releases of Open Liberty InstantOn.
365
366
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 {
// 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.
Copy file name to clipboardExpand all lines: modules/ROOT/pages/jakarta-ee.adoc
+11-4Lines changed: 11 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -38,13 +38,20 @@ image::jakarta-ee-ol-2.png[diagram that shows the relationship between Jakarta E
38
38
39
39
[#platform]
40
40
=== 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].
42
49
43
50
Java EE, which is now the open source Jakarta EE platform, has also evolved over a series of versions:
44
51
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.
48
55
* In September 2022, Jakarta EE 10 was released. This release included many API changes and dropped support for Java SE 8.
Copy file name to clipboardExpand all lines: modules/ROOT/pages/transaction-service.adoc
+16-1Lines changed: 16 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -85,6 +85,19 @@ To monitor peers, servers must be configured so that their transaction logs are
85
85
86
86
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.
87
87
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.
88
101
89
102
[#log]
90
103
== Transaction log management
@@ -110,7 +123,9 @@ To store your Open Liberty transaction logs in an RDBMS, you can configure a ded
110
123
</library>
111
124
----
112
125
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`.
114
129
115
130
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.
Copy file name to clipboardExpand all lines: modules/ROOT/pages/troubleshooting.adoc
+7Lines changed: 7 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,7 @@ If you want to find solutions to security related issues , the following informa
19
19
- <<#Troubleshooting_Kerberos, Troubleshooting Kerberos authentication to LDAP servers>>
20
20
* <<#Troubleshooting_SSO, Troubleshooting SSO>>
21
21
* <<#Troubleshooting_SSL, Troubleshooting SSL and TLS>>
22
+
* <<#Troubleshooting_TAI, Troubleshooting TAI>>
22
23
* <<#Other_troubleshooting, Other troubleshooting issues>>
23
24
24
25
[#Troubleshooting_ACME]
@@ -272,6 +273,12 @@ Exception thrown while trying to read configuration and update ManagedServiceFac
272
273
This error occurs when a keystore element exists in the configuration without an ID field.
273
274
If you use a minimal TLS configuration, set the `ID` field to `defaultKeyStore`.
274
275
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`.
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.
Copy file name to clipboardExpand all lines: modules/reference/pages/feature/springBoot-1.5/description.adoc
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,6 @@
1
1
2
+
## Spring Boot Starters
3
+
2
4
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.
3
5
4
6
.Open Liberty features that support Spring Boot 1.5 starters
Copy file name to clipboardExpand all lines: modules/reference/pages/feature/springBoot-2.0/description.adoc
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,6 @@
1
1
2
+
## Spring Boot Starters
3
+
2
4
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.
3
5
4
6
.Open Liberty features that support Spring Boot 2.0 starters
0 commit comments