Announcing Thorntail 2.0.0.Final

Thorntail 2.0.0.Final

The new name of WildFly Swarm is Thorntail! Enjoy the freedom of flying high like a Thorntail bird!

What’s New?

  • Did we say we have a new name? Thorntail!

  • Migration Tips

  • CDI Interceptor support for MicroProfile REST Client

New Name - Thorntail!

Yes we finally completed the migration and can provide a release of Thorntail!

As part of the name change we have left the YYYY.MM.VV versioning scheme in the past, switching to the more sensible major.minor.micro versioning. This will make it easier to represent stability and large changes in the version number alone.

Migration Notes

Migration from WildFly Swarm 2018.5.0 to Thorntail 2.0.0.Final is straightforward. Packages, class names, the set of artifacts and configuration properties did not change. Therefore, you will most likely only need to change the project build configuration.

TL;DR

  1. groupId of all artifacts now starts with io.thorntail prefix, replacing the previous value of org.wildfly.swarm

  2. The Maven plugin also has a new artifactId: thorntail-maven-plugin

  3. The suffix of generated uberjars and hollow JARs has changed to -thorntail.jar,

Five Steps to Migrate Your Maven Project

  1. Change groupId and version of the BOM:

     <dependency>
        <groupId>io.thorntail</groupId>
        <artifactId>bom</artifactId>
        <version>2.0.0.Final</version>
     </dependency>
  2. Change the groupId of each built-in fraction to io.thorntail, for example:

    <!-- BEFORE  -->
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>jaxrs</artifactId>
    </dependency>
    <!-- AFTER  -->
    <dependency>
      <groupId>io.thorntail</groupId>
      <artifactId>jaxrs</artifactId>
    </dependency>
  3. Change groupId and artifactId of the Maven plugin:

    <!-- BEFORE  -->
    <plugin>
      <groupId>org.wildfly.swarm</groupId>
      <artifactId>wildfly-swarm-plugin</artifactId>
    </plugin>
    <!-- AFTER  -->
    <plugin>
      <groupId>io.thorntail</groupId>
      <artifactId>thorntail-maven-plugin</artifactId>
    </plugin>
  4. The suffix of a generated uberjar has changed to -thorntail.jar so don’t forget to change the command used to run your app, for example:

    java -jar target/myexample-1.0.0-thorntail.jar
  5. The Maven plugin name has changed, so if you invoke it from command line, don’t forget to use the new name as well:

    mvn thorntail:start

Fabric8 Maven plugin changes

If you use the Fabric8 Maven plugin to deploy your application to Kubernetes / OpenShift, you need to update to 3.5.40. This is the first version that supports Thorntail v2. The feature set is identical to the Fabric8 Maven plugin support for WildFly Swarm. Here’s a summary of names that you need to change if you refer to them directly:

Table 1. Fabric8 Maven plugin changes
Fabric8 Maven plugin concept WildFly Swarm Thorntail v2

Docker image generator

wildfly-swarm

thorntail-v2

Health check enricher name

f8-wildfly-swarm-health-check

f8-thorntail-v2-health-check

Reference to health check enricher in pom.xml

<wildfly-swarm-health-check>

<thorntail-v2-health-check>

CDI Interceptor support for MicroProfile REST Client

We’ve added a non portable feature to MP REST Client that enables CDI Interceptors to be used on REST Client methods.

Full details on the feature and how it works can be found here.

Changelog

Release notes for 2.0.0.Final are available here.

Bug

  • [THORN-1473] Shrinkwrap High Memory Usage on Startup (Done)

  • [THORN-1774] Wildfly Swarm Security Constraints configured in YAML behave different than in WEB.XML (Done)

  • [THORN-2015] old version of org.wildfly.swarm:config-api-runtime gets pulled in transitively in certain situations (Done)

  • [THORN-2021] Dependencies from a Dependency Tree are not in the classpath (Done)

  • [THORN-2050] MP metrics: can’t inject MetricRegistry for the Base and Vendor scopes (Done)

  • [THORN-2051] MP metrics: MetricRegistry.getTimers and similar methods don’t filter by type, leading to ClassCastExceptions (Done)

  • [THORN-2053] MP Metrics API module does not declare a dependency on javax.enterprise.api (Done)

  • [THORN-2082] Thorntail Maven plugin uses wrong classifier name for packaging and multistart (Done)

Task

  • [THORN-1691] MP OpenTracing impl (Done)

  • [THORN-1942] Avoid releasing microprofile-tcks to accelerate and also minimize the risk of failing the release process (Done)

  • [THORN-2005] Support configuring multiple Keycloak realms (Done)

  • [THORN-2020] add the "jaeger" fraction to the supported profile (Done)

  • [THORN-2030] MicroProfile Rest Client - CDI interceptors support (Done)

  • [THORN-2031] Project Rename and Migration (Done)

  • [THORN-2035] Document MP Rest Client CDI interceptors support (Done)

  • [THORN-2039] Create Keycloak Multitenancy demo (Done)

  • [THORN-2048] Project rename - fabric8-maven-plugin updates (Done)

  • [THORN-2055] Reflect project rename and migration in examples (Done)

  • [THORN-2056] Rename pre-built hollow JARs (Done)

  • [THORN-2057] Project rename and migration - deep docs review (Done)

  • [THORN-2058] Project rename - change the uberjar suffix (Done)

  • [THORN-2059] Custom KeyCloak theme modules can not be loaded (Done)

  • [THORN-2060] Project Rename - replace "WildFly Swarm" in log messages (Done)

  • [THORN-2084] Investigate if the audit file can be set up at the elytron config level and do not auto-create it if yes (Done)

Library Upgrade

  • [THORN-1939] Update keycloak dependency to 3.4.3.Final (Done)

Feature Request

  • [THORN-2027] MP FT - activate CDI request context during @Asynchronous method invocation (Done)

Enhancement

  • [THORN-2036] Add autodetect to MicroProfile Metrics, OpenApi and RestClient (Done)

  • [THORN-2038] Keycloak Multitenancy resolver should use 'startsWith' or regex instead of 'equals' checks (Done)

  • [THORN-2041] Add support for Keycloak for Teiid OData web application (Done)

  • [THORN-2068] MicroProfile Metrics - support MicroProfile Rest Client proxies interception (Done)

Resources

Per usual, we tend to hang out on irc.freenode.net in #thorntail.

All bug and feature-tracking is kept in JIRA.

Documentation for this release is available:

Thank you, Contributors!

We appreciate all of our contributors since the last release:

Examples

  • Sergey Beryozkin

  • Martin Kouba

  • Antoine Sabot-Durand

  • Michal Szynkiewicz

Core

  • Sergey Beryozkin

  • Ken Finnigan

  • George Gastaldi

  • Martin Kouba

  • Phillip Kruger

  • Pavol Loffay

  • Sam McCollum

  • Bob McWhirter

  • Tomas Radej

  • Ramesh Reddy

  • Antoine Sabot-Durand

  • Dennis Schwarz

  • MichaƂ Szynkiewicz

  • Ladislav Thon