Thorntail 2.7 リリースノート

Red Hat build of Thorntail 2.7

Thorntail 2.7.3 での使用

概要

本リリースノートには、Thorntail 2.7.3 に関する重要な情報が含まれています。

はじめに

リリース日:2021-02-08

Red Hat ビルドの Thorntail 2.7 - ライフサイクルの終了

Thorntail 2.7 の Red Hat ビルドは、最後のサポート対象リリースです。フルサポートは 2021 年 5 月 31 日に終了します。詳細は、製品ライフサイクル ページを参照してください。Red Hat は、製品ライフサイクルが終了するまで、2.7.x リリースで Red Hat ビルドの Thorntail のセキュリティーとバグ修正を提供し続けます。

要件に応じて、Thorntail アプリケーションを以下のランタイムのいずれかに移行できます。

Red Hat ビルドの Quarkus

Quarkus は、最適な Java ライブラリーと標準を使用して作成された、JVM およびネイティブコンパイル用に調整された Kubernetes ネイティブ Java フレームワークです。サーバーレス、マイクロサービス、コンテナー、Kubernetes、FaaS、クラウドなどの環境で Java アプリケーションを実行するための効果的なソリューションを提供します。

Thorntail は、多くの同じライブラリーおよび標準を使用し、同様の環境を対象としています。したがって、Thorntail アプリケーションを Quarkus に移行することを推奨します。

詳細は、Quarkus の 製品ページドキュメント を参照してください。

Red Hat JBoss Enterprise Application Platform (EAP)

EAP は、WildFly プロジェクトをベースとした認定済みの Jakarta EE アプリケーションサーバーです。Thorntail は EAP 上に構築されているため、EAP への移行も選択肢の 1 つです。

EJB、JCA、JSF などのテクノロジーを使用している場合、または SOAP やアプリケーションサーバークラスタリングなどの他のテクノロジーを使用する場合は、Thorntail アプリケーションを EAP に移行してください。

JBoss Enterprise Application Platform 拡張パック (EAP XP) の導入により、EAP はすべての Eclipse MicroProfile API をサポートするようになりました。API を実装するために、EAP は Thorntail が使用するのと同じ SmallRye コンポーネントを使用します。

詳細は、EAP の 製品ページドキュメント を参照してください。

Red Hat は、移行作業を支援するためのリソースを作成する予定です。

Red Hat ドキュメントへのフィードバック (英語のみ)

弊社のドキュメントに関するご意見やご感想をお寄せください。フィードバックをお寄せいただくには、ドキュメントのテキストを強調表示し、コメントを追加できます。

本セクションでは、フィードバックの送信方法を説明します。

前提条件

  • Red Hat カスタマーポータルにログインしている。
  • Red Hat カスタマーポータルで、マルチページ HTML 形式でドキュメントを表示している。

手順

フィードバックを提供するには、以下の手順を実施します。

  1. ドキュメントの右上隅にある フィードバック ボタンをクリックして、既存のフィードバックを確認します。

    注記

    フィードバック機能は、マルチページ HTML 形式でのみ有効です。

  2. フィードバックを提供するドキュメントのセクションを強調表示します。
  3. ハイライトされたテキスト近くに表示される Add Feedback ポップアップをクリックします。

    ページの右側のフィードバックセクションにテキストボックスが表示されます。

  4. テキストボックスにフィードバックを入力し、Submit をクリックします。

    ドキュメントに関する問題が作成されます。

  5. この問題を確認するには、フィードバックビューで問題トラッカーをクリックします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

第1章 必要なインフラストラクチャーコンポーネントのバージョン

Red Hat は、サポートとして明示的に指定されたコンポーネントを除き、以下のコンポーネントに対するサポートは提供していません。

コンポーネント名Version

Maven

3.6.0

OpenShift Maven プラグイン

1.1.0

JDK[a][b]

OpenJDK 8 または OpenJDK 11[c]

Red Hat Enterprise Linux 7[d]

7.7

Red Hat Enterprise Linux 8[e]

8.1

OpenShift Container Platform (OCP)[f]

3.11、4.6

Minishift

1.34.2 以降

CDK[g]

3.11.0

git

2.0 以降

oc コマンドラインツール

3.11 以降[h]

[a] JRE はソースから Java アプリケーションをコンパイルするツールを提供しないため、完全な JDK インストールが必要です。
[b] Red Hat OpenJDK は、Red Hat によってサポートされます。
[c] Red Hat は、JDK の LTS リリースのみをサポートします。
[d] 実稼働環境のスタンドアロン RHEL に CNR をベースとしたアプリケーションをデプロイする場合。
[e] 実稼働環境のスタンドアロン RHEL に CNR をベースとしたアプリケーションをデプロイする場合。
[f] OCP は Red Hat によってサポートされます
[g] CDK は Red Hat によってサポートされています。
[h] CLI ツール oc のバージョンは、使用している OCP のバージョンに対応する必要があります。

第2章 サポートされる Thorntail Runtime コンポーネント設定およびインテグレーション

以下のリソースは、Thorntail での Red Hat 製品のサポートされる設定およびインテグレーションを定義します。

第3章 リリースコンポーネント

3.1. 本リリースで導入されたサポート対象のアーティファクト

本リリースでは、次のサポート対象のアーティファクトが導入されました。

  • 新しいフラクション io.thorntail:hibernate

3.2. 本リリースで導入されたテクニカルプレビューアーティファクト

本リリースでは、テクノロジープレビューアーティファクトは導入されていません。

3.3. 本リリースで削除されたアーティファクト

本リリースで削除されたアーティファクトはありません。

3.4. 本リリースで非推奨となったアーティファクト

本リリースで非推奨となったアーティファクトはありません。

第4章 機能

4.1. 新機能と機能のアップグレード

4.1.1. IBM Z および IBM Power Systems での Thorntail Runtime のサポート

s390x および ppc64le プラットフォーム向け Red Hat ビルドの Thorntail は、IBM Z および IBM Power Systems インフラストラクチャーにプロビジョニングされる OpenShift 環境でのみサポートされています。IBM Z および IBM Power Systems での RHEL のスタンドアロンインストールでの Thorntail アプリケーションの実行はサポートされていません。

IBM Z および IBM Power System でサポートされている Eclipse OpenJ9 Java イメージと、IBM Z および IBM Power System でサポートされている製品向け新しいイメージは、Red Hat エコシステムカタログ から入手できます。

4.1.2. IBM Z および IBM Power System のインフラストラクチャーでプロビジョニングされた OpenShift でのサンプルアプリケーションのデプロイ

IBM Z および IBM Power System インフラストラクチャーでプロビジョニングされている OpenShift 環境でサンプルアプリケーションをデプロイするには、pom.xml ファイルおよびコマンドに関連する IBM Z および IBM Power System のイメージ名を指定します。

サンプルアプリケーションの一部には、ワークフローを実証するために Red Hat Data Grid などの他の製品も必要になります。この場合は、これらの製品のイメージ名を、サンプルアプリケーションの YAML ファイルで関連する IBM Z および IBM Power System のイメージ名に変更する必要もあります。

4.1.3. OpenShift Maven プラグインを使用した Thorntail アプリケーションのデプロイ

OpenShift Maven プラグインを使用して、OpenShift に Torntail アプリケーションをデプロイします。Fabric8 Maven プラグインはサポート対象外になりました。詳細は、migrating from Fabric8 Maven Plugin to Eclipse JKube セクションを参照してください。

4.1.4. OpenShift の Thorntail メータリングラベル

メータリングラベルを Thorntail Pod に追加し、OpenShift Metering Operator を使用して Red Hat サブスクリプションの詳細を確認できます。

注記

メータリングラベルは、Operator またはテンプレートがデプロイおよび管理する Pod に追加しないでください。

Thorntail は以下のメータリングラベルを使用する必要があります。

  • 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

詳細は、メータリング のドキュメントを参照してください。

ラベルの詳細は、ノードでラベルを更新する方法について を参照してください。

4.1.5. 新しい hibernate フラクション

新しいフラクションの hibernate が利用可能になりました。このフラクションは、jpa フラクションと同じ機能を提供します。さらに、hibernate フラクションは Hibernate アーティファクトの正しいバージョンの依存関係を提供します。アプリケーションで Hibernate API を使用する場合は、手動で管理するのではなく、このフラクションを使用して Hibernate バージョンを管理できます。

4.1.6. uberjar 内でアプリケーション WAR のみを再パッケージ化するオプションを導入

filterWebInfLib 設定オプションで、新しい値 uberjar-only が導入されました。この値を指定すると、uberjar 内の WAR ファイルのみが再パッケージ化されます。スタンドアロン WAR ファイルは変更されません。

自己完結型デプロイメント用の uberjar と、アプリケーションサーバーへのデプロイメント用のスタンドアロン WAR を作成する場合は、uberjar-only オプションを使用できます。

4.1.7. 機能のアップグレード

Thorntail のこのリリースでは、次の機能のアップグレードが導入されました。

4.1.7.1. Eclipse MicroProfile 3.3 のサポート

このリリースでは、最新の SmallRye アーティファクトを含めることで、Eclipse MicroProfile 3.3 を実装しています。以下の仕様が、以下にリストされているバージョンにアップグレードされました。

  • Health Check 2.2

    • HealthCheckResponse は抽象クラスではなくなりました。また、2 つの新しい便利なメソッド HealthCheckResponse.upHealthCheckResponse.down が導入されました。
  • Metrics 2.3

    • このリリースでは、シンプルタイマー と呼ばれる新しいタイプのメトリックが導入されました。このタイマーは、呼び出しの数と期間を追跡します。
    • このリリースでは、新しいアノテーション @SimplyTimed が導入されました。注釈を使用してシンプルタイマーを作成します。
    • REST.request などのいくつかの新しいメトリックは、base スコープで使用できます。REST.request メトリックは、REST エンドポイントのリクエストの数と期間を追跡します。
    • MetadataBuilderMetricID、および MetricType インターフェイスで新しいメソッドを使用できます。
    • Thorntail のすべてのメトリックレジストリーは、スレッドセーフです。これは MicroProfile Metrics 仕様の要件になりました。
  • REST Client 1.4

    • ClientHeadersFactory インターフェイスを実装するクラスは、CDI Bean になることが可能になり、CDI インジェクションを使用できるようになりました。
    • ClientHeadersFactory インターフェイスを実装するクラスの JAX-RS インジェクション (@Context) は、Thorntail ではサポートされていません。これは、MicroProfile RestClient 仕様のオプション機能です。
  • Config 1.4

    • 一部のキャッシュおよびクラスローディングの問題が、ConfigProviderResolver クラスで修正されました。
    • Converter インターフェイスは、Serializable インターフェイスを拡張します。
    • 新しい組み込みの Converter タイプが利用可能になりました。
  • Fault Tolerance 2.1

    • 新しいアノテーション属性 CircuitBreaker.skipOnFallback.applyOn、および Fallback.skipOn が利用可能になりました。
    • retryOn および abortOn 例外セットが重複する場合の @Retry の動作が指定されました。以下の場合に、同様の動作が指定されます。

      • failOnskipOn が重複する場合の @CircuitBreaker
      • applyOnskipOn が重複する場合の @Fallback

4.1.8. 更新されたコンポーネント

このセクションでは、Thorntail リリースで更新されたコンポーネントを一覧表示します。

4.1.8.1. Thorntail 2.7.3

Thorntail 2.7.3 リリースで更新されたコンポーネントは次のとおりです。

Red Hat JBoss EAP 7.3.5 GA
Thorntail の EAP 依存関係が Red Hat JBoss Enterprise Application Platform 7.3.5 GA リリースに更新されました。
Red Hat SSO 7.4.5 GA
Thorntail のシングルサインオンコンポーネントが Red Hat Single Sign-On 7.4.5 GA リリースに更新されました。

4.1.8.2. Thorntail 2.7.2

Thorntail 2.7.2 リリースで更新されたコンポーネントは次のとおりです。

Red Hat JBoss EAP 7.3.4 GA
Thorntail の EAP 依存関係が Red Hat JBoss Enterprise Application Platform 7.3.4 GA リリースに更新されました。
Red Hat SSO 7.4.4 GA
Thorntail のシングルサインオンコンポーネントが Red Hat Single Sign-On 7.4.4 GA リリースに更新されました。

4.1.8.3. Thorntail 2.7.1

Thorntail 2.7.1 リリースで更新されたコンポーネントは次のとおりです。

Red Hat JBoss EAP 7.3.2 GA
Thorntail の EAP 依存関係が Red Hat JBoss Enterprise Application Platform 7.3.2 GA リリースに更新されました。
Red Hat SSO 7.4.2 GA
Thorntail のシングルサインオンコンポーネントが Red Hat Single Sign-On 7.4.2 GA リリースに更新されました。

4.1.8.4. Thorntail 2.7.0

Thorntail 2.7.0 リリースで更新されたコンポーネントは次のとおりです。

Red Hat JBoss EAP 7.3.1 GA
Thorntail の EAP 依存関係が Red Hat JBoss Enterprise Application Platform 7.3.1 GA リリースに更新されました。
Red Hat SSO 7.4.1 GA
Thorntail のシングルサインオンコンポーネントが Red Hat Single Sign-On 7.4.1 GA リリースに更新されました。
SmallRye Config 1.6.2
Thorntail のこのリリースには、SmallRye Config 1.6.2 が含まれています。
SmallRye Fault Tolerance 4.3.0
Thorntail のこのリリースには、SmallRye Fault Tolerance 4.3.0 が含まれています。
Jakarta EE 8 仕様アーティファクト
Thorntail のこのリリースでは、Java EE 8 仕様アーティファクトではなく、Jakarta EE 8 仕様アーティファクトを使用します。これらの仕様アーティファクトは完全に互換性があるため、Thorntail アプリケーションでの変更は必要ありません。

4.2. 変更された機能および非推奨の機能

4.2.1. デフォルトの Maven リポジトリーに Red Hat Maven リポジトリーを追加

Red Hat Maven リポジトリーは、Thorntail がアーティファクトのダウンロードに使用するデフォルトの Maven リポジトリーのセットに含まれています。

Nexus などの Maven リポジトリープロキシーを使用する場合は、https://maven.repository.redhat.com/ga/ をプロキシーリポジトリーのリストに追加します。

4.2.2. 環境変数またはシステムプロパティーを使用して Thorntail 設定プロパティーを null に設定可能

環境変数またはシステムプロパティーを <<null>> に設定すると、対応する Thorntail 設定プロパティーが null に設定されます。

Thorntail 2.7.0 より前のリリースでは、環境変数またはシステムプロパティーを使用して設定プロパティーを null に設定できませんでした。設定プロパティーは常に、環境変数またはシステムプロパティーの文字列値に設定されていました。これは、空の文字列、null 文字列、またはその他の文字列である可能性がありました。

4.2.3. 空の値が使用された場合の MicroProfile Config の動作の変更

SmallRye Config が空の値を処理する方法が変更されました。

MicroProfile Config 設定プロパティーの値として空の文字列を指定すると、欠落した値として扱われるようになりました。

以前のリリースでは、空の文字列が空の値として扱われていたため、動作に一貫性がありませんでした。たとえば、配列として解釈された空の文字列は空の配列になっていましたが、配列として解釈された文字列 "," は 2 つの空の文字列の配列になっていました。

4.3. テクノロジープレビュー

本リリースでは、テクノロジープレビュー機能は導入されていません。

第5章 修正された問題

この Thorntail リリースには、次のバグ修正が含まれています。

5.1. Thorntail アプリケーションは WildFly OpenSSL で動作します

以前のリリースでは、WildFly OpenSSL が有効になっていると、Thorntail アプリケーションが起動に失敗していました。

この問題は Thorntail 2.7.2 で修正されました。WildFly OpenSSL を有効にして、JDK の Java 実装の代わりに、TLS 用のネイティブ OpenSSL ライブラリーを使用できます。これにより、TLS のパフォーマンスが向上します。

5.2. Thorntail アプリケーションは PostgreSQL JDBC ドライバーバージョン 42.2.15 以降で動作します

説明

以前のリリースでは、Thorntail アプリケーションで PostgreSQL JDBC ドライバーバージョン 42.2.15 以降を使用すると、アプリケーションが例外を出力し、起動に失敗していました。

この問題は Thorntail 2.7.2 で修正されました。Thorntail アプリケーションで PostgreSQL JDBC ドライバーバージョン 42.2.15 以降を使用できるようになりました。

5.3. Eclipse MicroProfile Fault Tolerance: @Timeout メソッドで使用可能な Contexts and Dependency Injection (CDI)

説明

以前のリリースでは、Thorntail は Hystrix ベースの SmallRye Fault Tolerance バージョン 2.x を使用していました。この実装は、@Asynchronous でなくても、常に専用スレッドプールで @Timeout メソッドを実行しました。このため、@Timeout メソッドで CDI コンテキストを使用できませんでした。

Thorntail 2.7.0 リリースでは、Hystrix ベースではなくなった SmallRye Fault Tolerance 4.x を使用しています。これは、元のスレッドで @Asynchronous ではない @Timeout メソッドを実行するため、CDI コンテキストを使用できます。

@Inject
private MyService service;

@Timeout
public String doSomething() {
    return "Hello " + service.call();
}

この例では、MyService クラスは @RequestScoped として定義されています。doSomething メソッドは MyService のコンテキストインスタンスを使用します。doSomething は追加のスレッドで呼び出されていたため、この例は以前のリリースでは機能しませんでした。Thorntail 2.7.0 では、期待どおりに動作します。

5.4. 修正されたセキュリティーの問題

解決されたセキュリティー問題の一覧については、このリリースに関連するアドバイザリー を参照してください。

第6章 既知の問題

6.1. ロギングの問題が原因で Thorntail アプリケーションが起動しない

説明

Thorntail は WildFly をベースにしています。Wildfly では、java.util.logging.manager プロパティーの値は常に org.jboss.logmanager.LogManager (JBoss LogManager) に設定する必要があります。JBoss Modules は、起動時にログマネージャーを初期化します。ただし、場合によっては、ログマネージャーが設定される前に java.util.logging が呼び出されます。このような場合、Thorntail アプリケーションは起動に失敗し、次のエラーを返します。

ERROR: WFLYCTL0013: Operation ("parallel-extension-add") failed - address: ([])
java.lang.RuntimeException: WFLYCTL0079: Failed initializing module org.jboss.as.logging
        ...
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: WFLYLOG0078: The logging subsystem requires the log manager to be org.jboss.logmanager.LogManager.
The subsystem has not be initialized and cannot be used.
To use JBoss Log Manager you must add the system property "java.util.logging.manager" and set it to "org.jboss.logmanager.LogManager"

原因

java.util.logging の初期化が早すぎると、Thorntail アプリケーションが起動に失敗します。java.util.logging の初期化が早すぎる理由には、次のようなものがあります。

  • アプリケーションが、Jolokia エージェントなどの Java エージェントを使用する。
  • JDK 自体はロギングを使用する。

回避策

OpenShift で Thorntail を使用するには、Red Hat Java S2I イメージで使用可能な Java エージェントをオフにすることを推奨します。

次のいずれかの方法を使用して、エージェントをオフにすることができます。

  • Jolokia エージェントをオフにするには、次の環境変数を設定する必要があります。

    • AB_OFFtrue に設定
    • AB_JOLOKIA_OFFtrue に設定

次の例は、環境変数が設定されている OpenShift デプロイメント設定を示しています。

apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  ...
spec:
  ...
  template:
    metadata:
      ...
    spec:
      containers:
      - image: ...
        env:
        - name: AB_JOLOKIA_OFF
          value: "true"
        - name: AB_OFF
          value: "true"
        ...
  • OpenShift Maven プラグインを使用して YAML ファイルを生成することもできます。次のコードに示すように、OpenShift Maven プラグイン設定で環境変数を設定できます。
<plugin>
  <groupId>org.eclipse.jkube</groupId>
  <artifactId>openshift-maven-plugin</artifactId>
  <version>${version.openshift-maven-plugin}</version>
  <executions>
    <execution>
      <goals>
        <goal>resource</goal>
        <goal>build</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <resources>
      <env>
        <AB_OFF>true</AB_OFF>
        <AB_JOLOKIA_OFF>true</AB_JOLOKIA_OFF>
      </env>
    </resources>
  </configuration>
</plugin>
  • JBoss LogManager を java.util.logging.manager として明示的に設定できます。次の例は、設定を示しています。
java -Xbootclasspath/p:/home/test/.m2/repository/org/jboss/logmanager/jboss-logmanager/2.1.14.Final-redhat-00001/jboss-logmanager-2.1.14.Final-redhat-00001.jar:/home/test/.m2/repository/org/wildfly/common/wildfly-common/1.5.1.Final-redhat-00001/wildfly-common-1.5.1.Final-redhat-00001.jar -Djboss.modules.system.pkgs=org.jboss.logmanager,org.wildfly.common -Djava.util.logging.manager=org.jboss.logmanager.LogManager -jar myapp-thorntail.jar

6.2. アプリケーションログの無害なエラーメッセージ: org.glassfish:javax.el-api:3.0.1.b08-redhat-1 が見つからない

説明

アプリケーションまたはその依存関係のいずれかが Java 式言語に依存している場合、起動時に次の警告メッセージが表示されます。

Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from https://repository.jboss.org/nexus/content/groups/public/. Reason:
org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in jboss-public-repository-group (https://repository.jboss.org/nexus/content/groups/public/)
Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from http://repo.gradle.org/gradle/libs-releases-local/. Reason:
org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in gradle (http://repo.gradle.org/gradle/libs-releases-local)
Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from https://repo.maven.apache.org/maven2/. Reason:
org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in central (https://repo.maven.apache.org/maven2)
Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from http://repo1.maven.org/maven2/. Reason:
org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in central (http://repo1.maven.org/maven2)

このメッセージは無害であり、アプリケーションの機能には影響しません。

原因

この問題は、Thorntail の依存関係解決メカニズムが原因で発生します。依存関係の解決フェーズでは、Thorntail は依存関係の除外を無視するため、javax.el-api アーティファクトをプルしようとします。しかし、javax.el-api は必須ではなく、除外されているため、リポジトリーでは使用できません。これにより、ビルドログにエラーメッセージが表示されます。

回避策

このリリースの時点では、この問題に対する回避策はありません。

6.3. TLS プロトコルのバージョンが一致しないため、RHEL 8 ベースのデータベースアプリケーションと RHEL 7 ベースの MySQL 5.7 データベース間の接続が失敗する

説明

RHEL 8 ベースの OpenJDK ビルダーイメージで構築されたアプリケーションコンテナーと、RHEL 7 ベースの MySQL 5.7 コンテナーイメージ上に構築されたデータベースコンテナーとの間で、OpenSSL を使用して TLS でセキュア化された接続を開くと、ランタイム時に javax.net.ssl.SSLHandshakeException によって接続に失敗します。詳細は、JIRA の問題 を参照してください。

...
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
...

原因

この問題は、RHEL 7 から RHEL 8 でサポートされる最新の TLS プロトコルバージョンが異なるために発生します。RHEL 7 の TLS 実装は、TLS プロトコルバージョン 1.0 (非推奨)、1.1、および 1.2 に対応しています。RHEL 8 の TLS 実装は、TLS プロトコルバージョン 1.3 にも対応しています。これは、RHEL 8 ベースのビルダーイメージで使用されるデフォルトの TLS バージョンでもあります。この不一致により、TLS ハンドシェイクのネゴシエーション中に、アプリケーションコンポーネント間で TLS プロトコルバージョンの不一致が発生し、アプリケーションとデータベースコンテナーとの間の接続が失敗する可能性があります。

回避策

上記の問題を防ぐには、データベース接続文字列の両方のオペレーティングシステムバージョンでサポートされる TLS プロトコルバージョンを手動で指定します。以下に例を示します。

jdbc:mysql://testdb-mysql:3306/testdb?enabledTLSProtocols=TLSv1.2

6.4. Thorntail Arquillian アダプターが mvn -s settings.xml を無視する

説明

統合テストとユニットテストの実行時に、setting.xml ファイルで参照されている追加のリポジトリーを Thorntail Arquillian アダプターに渡そうとすると、settings.xml ファイルが認識されず、追加のリポジトリーが設定されません。この問題により、アーティファクトが欠落しているためにビルドが失敗し、その結果、テストが失敗します。

回避策

この問題を回避するには、Maven プロジェクトの pom.xml ファイルの Maven Surefire や Maven Failsafe プラグインのエントリーの下にある <configuration> セクションを手動で編集し、アプリケーションのテスト時にエクスポートする <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings> プロパティーを手動で指定します。詳細は、例を参照してください。

pom.xml

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>