Chapter 4. Features
4.1. New features and feature upgrades
4.1.1. Support for Thorntail Runtime on IBM Z and IBM Power Systems
The Red Hat build of Thorntail for s390xand ppc64le platform is supported only in OpenShift environments provisioned on IBM Z and IBM Power Systems infrastructure. Running an Thorntail application on a stand-alone installation of RHEL on IBM Zand IBM Power Systems is not supported.
Eclipse OpenJ9 Java images for IBM Z and IBM Power Systems and new images for products supported on IBM Z and IBM Power Systems are available in the Red Hat Ecosystem Catalog.
4.1.2. Deploying example applications on OpenShift provisioned on IBM Z and IBM Power Systems infrastructure
To deploy the example applications on OpenShift environments provisioned on IBM Z and IBM Power Systems infrastructure, specify the relevant IBM Z and IBM Power Systems image name in the pom.xml
file and commands.
Some of the example applications also require other products, such as Red Hat Data Grid to demonstrate the workflows. In this case, you must also change the image names of these products to their relevant IBM Z and IBM Power Systems image names in the YAML file of the example applications.
4.1.3. Deploy Thorntail applications using OpenShift Maven plugin
Use the OpenShift Maven plugin to deploy your Thorntail applications on OpenShift. The Fabric8 Maven plugin is no longer supported. For more information, see the section migrating from Fabric8 Maven Plugin to Eclipse JKube.
4.1.4. Thorntail metering labels for OpenShift
You can add metering labels to your Thorntail pods and check Red Hat subscription details with the OpenShift Metering Operator.
Do not add metering labels to any pods that an operator or a template deploys and manages.
Thorntail should use the following metering labels:
-
com.redhat.component-name: Thorntail
-
com.redhat.component-type: application
-
com.redhat.component-version: 2.7.3
-
com.redhat.product-name: "Red_Hat_Runtimes"
-
com.redhat.product-version: 2021-Q1
See Metering documentation for more information.
For more information on labels, see Understanding how to update labels on nodes.
4.1.5. New hibernate
fraction
A new fraction hibernate
is available. This fraction provides the same functionality as jpa
fraction. Additionally the hibernate
fraction provides dependencies on the correct versions of Hibernate artifacts. If you use Hibernate APIs in your applications, you can use this fraction to manage the Hibernate versions instead of managing them manually.
4.1.6. Introduced an option to only repackage application WAR inside the uberjar
The filterWebInfLib
configuration option introduces a new value uberjar-only
. When this value is specified, only the WAR file inside the uberjar is repackaged. The standalone WAR file is not modified.
You can use the uberjar-only
option when you want to create both, an uberjar for self-contained deployment, and a standalone WAR for deployment to an application server.
4.1.7. Feature upgrades
This release of Thorntail introduces the following feature upgrades:
4.1.7.1. Eclipse MicroProfile 3.3 support
This release implements Eclipse MicroProfile 3.3 by including the latest SmallRye artifacts. The following specifications have been upgraded to the versions listed below:
Health Check 2.2
-
HealthCheckResponse
is no longer an abstract class. It also introduces two new convenience methodsHealthCheckResponse.up
andHealthCheckResponse.down
.
-
Metrics 2.3
- This release introduces a new type of metric called simple timer. The timer tracks the count and duration of invocations.
-
This release introduces a new annotation,
@SimplyTimed
. Use the annotation to create simple timers. -
Some new metrics, such as,
REST.request
, are available in the base scope. TheREST.request
metric tracks the count and duration of requests for a REST endpoint. -
New methods are available in the
MetadataBuilder
,MetricID
, andMetricType
interfaces. - All metric registries in Thorntail are thread safe. This is now a requirement of the MicroProfile Metrics specification.
Rest Client 1.4
-
Classes that implement the
ClientHeadersFactory
interface can now be CDI beans and use CDI injection. -
JAX-RS injection (
@Context
) for classes that implement theClientHeadersFactory
interface is not supported in Thorntail. This is an optional feature of the MicroProfile RestClient specification.
-
Classes that implement the
Config 1.4
-
Some caching and classloading issues are fixed in the
ConfigProviderResolver
class. -
The
Converter
interface extendsSerializable
interface. -
New built-in
Converter
types are available.
-
Some caching and classloading issues are fixed in the
Fault Tolerance 2.1
-
New annotation attributes
CircuitBreaker.skipOn
,Fallback.applyOn
, andFallback.skipOn
are available. Specified the behavior for
@Retry
when theretryOn
andabortOn
exception sets overlap. Similar behavior is specified for:-
@CircuitBreaker
whenfailOn
andskipOn
overlap -
@Fallback
whenapplyOn
andskipOn
overlap
-
-
New annotation attributes
4.1.8. Updated components
This section lists the components that are updated in Thorntail releases.
4.1.8.1. Thorntail 2.7.3
The components updated in Thorntail 2.7.3 release are:
- Red Hat JBoss EAP 7.3.5 GA
- The EAP dependencies in Thorntail have been updated to Red Hat JBoss Enterprise Application Platform 7.3.5 GA release.
- Red Hat SSO 7.4.5 GA
- The single sign-on components in Thorntail have been updated to Red Hat Single Sign-On 7.4.5 GA release.
4.1.8.2. Thorntail 2.7.2
The components updated in Thorntail 2.7.2 release are:
- Red Hat JBoss EAP 7.3.4 GA
- The EAP dependencies in Thorntail have been updated to Red Hat JBoss Enterprise Application Platform 7.3.4 GA release.
- Red Hat SSO 7.4.4 GA
- The single sign-on components in Thorntail have been updated to Red Hat Single Sign-On 7.4.4 GA release.
4.1.8.3. Thorntail 2.7.1
The components updated in Thorntail 2.7.1 release are:
- Red Hat JBoss EAP 7.3.2 GA
- The EAP dependencies in Thorntail have been updated to Red Hat JBoss Enterprise Application Platform 7.3.2 GA release.
- Red Hat SSO 7.4.2 GA
- The single sign-on components in Thorntail have been updated to Red Hat Single Sign-On 7.4.2 GA release.
4.1.8.4. Thorntail 2.7.0
The components updated in Thorntail 2.7.0 release are:
- Red Hat JBoss EAP 7.3.1 GA
- The EAP dependencies in Thorntail have been updated to Red Hat JBoss Enterprise Application Platform 7.3.1 GA release.
- Red Hat SSO 7.4.1 GA
- The single sign-on components in Thorntail have been updated to Red Hat Single Sign-On 7.4.1 GA release.
- SmallRye Config 1.6.2
- This release of Thorntail contains SmallRye Config 1.6.2.
- SmallRye Fault Tolerance 4.3.0
- This release of Thorntail contains SmallRye Fault Tolerance 4.3.0.
- Jakarta EE 8 specification artifacts
- This release of Thorntail uses Jakarta EE 8 specification artifacts instead of Java EE 8 specification artifacts. Since these specification artifacts are fully compatible, no changes are required in the Thorntail applications.
4.2. Changed and deprecated features
4.2.1. Red Hat Maven repository added to default Maven repositories
The Red Hat Maven repository has been included in the set of default Maven repositories that Thorntail uses to download artifacts.
If you use a Maven repository proxy, such as Nexus, add https://maven.repository.redhat.com/ga/ to the list of proxy repositories.
4.2.2. Thorntail configuration property can be set to null
using environment variables or system properties
When you set an environment variable or system property to <<null>>
, the corresponding Thorntail configuration property is set to null
.
In releases prior to Thorntail 2.7.0, you could not set the configuration property to null
using environment variables or system properties. The configuration property would always be set to the string value of the environment variable or system property, which could be an empty string, or the "null"
string, or any other string.
4.2.3. Change in MicroProfile Config behavior when empty values are used
There is a change in how SmallRye Config treats empty values.
If you specify an empty string as a value for a MicroProfile Config configuration property, it is now treated as a missing value.
In previous releases, an empty string was treated as an empty value, which led to inconsistent behavior. For example, an empty string interpreted as an array would become an empty array, but a string ","
interpreted as an array would become an array of 2 empty strings.
4.3. Technology preview
No technology preview features have been introduced in this release.