Jakarta EE 9 の動作の違い

Liberty で Jakarta EE 9 に移行する場合、実装の変更および仕様の明確化により、アプリケーションの動作にいくつかの違いが生じる可能性があります。 Liberty では、次の Java EE レベルに移行する必要はなく、既存の Java EE 6、 Java EE 7、または Java EE 8 フィーチャーを引き続き使用できます。 Jakarta EE 9 レベルに移行する場合、アプリケーションによって使用されるすべてのテクノロジーを Jakarta EE 9 レベルに移行する必要があります。

一般規則

規則名 ルールの説明 自動修正
新しい Jakarta EE パッケージ名を使用するようにアプリケーションを更新する Jakarta EE 9では、パッケージの名前空間がjavax.*からjakarta.*に変更されました。 jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta

Jakarta Enterprise Beans 4.0

規則名 ルールの説明 自動修正
EJB コンテキストの相違点 javax.ejb.EJBContext クラスの getCallerIdentity(), getEnvironment(), isCallerRole(java.security.Identity) メソッドが削除されました。 javax.ejb.SessionContextクラスのgetMessageContext()メソッドが削除されました。 いいえ

Jakarta Management

規則名 ルールの説明 自動修正
Jakarta Management 仕様が削除されました。 この規則により、javax.management.j2eejavax.management.j2ee.statistics および org.omg.stub.javax.management.j2ee パッケージへの参照にフラグを立てます。 いいえ

Jakarta XML Web サービス 3.0

規則名 ルールの説明 自動修正
Apache Web Services セキュリティー・パッケージ名の更新 org.apache.ws.security および org.apache.ws.security.components.crypto パッケージは、 org.apache.wss4j.common.ext および org.apache.wss4j.common.crypto パッケージに置き換えられました。 jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.UpdateApacheWSSecurityPackages 

RESTful Web サービス 3.0

規則名 ルールの説明 自動修正
@ApplicationPath、@Path、および @Provider は、CDI Bean 定義アノテーションになりました。 この規則により、 @ApplicationPath、 @Path、および @Provider アノテーションの使用にフラグを立てます。 いいえ
CDI 注入を使用するアプリケーション・サブクラスには、 @ApplicationPath アノテーションを付ける必要があります。 この規則により、 @ApplicationPath アノテーションを使用しない Application サブクラスの CDI アノテーションの使用にフラグを立てます。 いいえ
同じパスを持つサブリソース・メソッドおよびサブリソース・ロケーターを使用しない この規則により、複数のメソッドにわたって同じパスを定義する javax.ws.rs.Path メソッド・アノテーションにフラグを立てます。 いいえ
Application.getSingletons () メソッド使用時の動作の変更 このルールは、Application.getSingletons()メソッドの実装にフラグを立てる。 いいえ
HttpHeaders.getRequestHeader (String) の動作の変更を確認する このルールは、javax.ws.rs.core.HttpHeaders.getRequestHeader(String)メソッドを呼び出すJavaコードにフラグを立てる。 いいえ
Response.readEntity () での動作の変更を確認する このルールは、javax.ws.rs.core.Response.readEntity()メソッドを呼び出すJavaコードにフラグを立てる。 いいえ
Application.getClasses () 戻り値にローカル・インターフェースがあるかどうかを確認します このルールは、javax.ws.rs.Application.getClasses()メソッドの実装にフラグを立てる。 いいえ
JAX-RS パラメーターをリソース・クラス・コンストラクターに挿入することはできません この規則により、リソース・クラス・コンストラクターに挿入される JAX-RS パラメーターにフラグを立てます。 いいえ
JSON4JObjectProvider が使用できない このルールはcom.ibm.websphere.jaxrs.providers.json4j.JSON4JObjectProviderクラスにフラグを立てます。 いいえ
Liberty RESTful Web サービス・クライアント・プロパティーは推奨されません com.ibm.ws.jaxrs.client.receive.timeoutcom.ibm.ws.jaxrs.client.connection.timeoutClientBuilder プロパティは Jakarta EE9 では非推奨です。 代わりに、 ClientBuilder connectTimeout メソッドおよび readTimeout メソッドを使用してください。 いいえ
jakarta.ws.rs.client API で Null プロパティーが削除される jakarta.ws.rs.client API では、Null 値を持つプロパティー を使用しないでください。 いいえ
ApplicationPath アノテーション値からワイルドカード文字を削除します このルールは、/*で終わる指定された値を持つjavax.ws.rs.ApplicationPathアノテーションにフラグを立てる。 jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.ApplicationPathWildcardNoLongerAccepted 
サーバー・サイドの非同期サポートを有効にする必要があります このルールは、JAX-RSリソース・メソッドのAsyncResponseパラメータ・タイプで@Suspendedアノテーションの使用にフラグを立てる。 いいえ

スプリングフレームワーク 6.0

規則名 ルールの説明 自動修正
Spring Framework を Jakarta EE 9 サポート・バージョンに更新 この規則により、6 より小さい実装バージョン値を持つすべての spring-core-X.X.X.RELEASE.jar/META-INF/MANIFEST.MF ファイルにフラグを立てます。。 spring-framework-60.yml
org.openrewrite.java.spring.framework.UpgradeSpringFramework_6_0
Ehcache 2.x このルールは、 org.springframework.cache.ehcache パッケージの使用または ehcache.xml ファイルの存在にフラグを立てる。 いいえ
EJBを検索するために、専用のSpring EJBアクセスクラスを使用しないでください このルールは、Javaの .class ファイルまたは .xml ファイルで org.springframework.ejb.access パッケージが使用されていることにフラグを立てる。 Spring 6.0 の場合は、Javaファイルの JndiObjectFactoryBean または .xml ファイルの jee:jndi-lookup を使って直接JNDIを使う。 いいえ
Asyncでアノテーションされたメソッドは、Futureかvoidを返す必要があります このルールは、 voidFuture<t>CompletableFuture<t>ListenableFuture<t> 以外の型を返す、 org.springframework.scheduling.annotation.Async でアノテーションされた Java メソッドにフラグを立てます。 いいえ
SourceHttpMessageConverter クラスはデフォルトでは登録されていません このルールは、 SourceHttpMessageConverter クラスが見つからない場合に、 javax.xml.transform.Source インターフェイスの使用にフラグを立てる。 Spring Framework 6.0 では、 SourceHttpMessageConverter クラスはSpring MVCや RestTemplate でデフォルトで登録されなくなりました。 いいえ
org.springframework.http.HttpMethod はクラスとなり、列挙型ではなくなった このルールは、コードが列挙型であると仮定している場合、 org.springframework.http.HttpMethod いいえ
HttpComponentsClientHttpRequestFactory Apache HttpClient 5 HttpClient 5.x Springの HTTP クライアントインフラストラクチャ内で、 org.apache.http.* パッケージの CloseableHttpClientHttpClientRequestConfigHttpContext などの HttpClient 4.x クラスを使用すると( HttpComponentsClientHttpRequestFactory を含むコンストラクタ、メソッド呼び出し、コンフィギュレーションを含む)、コンパイルエラーになる可能性があります。 いいえ
非推奨の ListenableFuture インタフェースの使用を避ける このルールは、 ListenableFuture インターフェースを実装するクラスにフラグを立てる。 SpringFramework 6.0 では、 ListenableFuture インターフェースは廃止され、 CompletableFuture インターフェースが採用された。 いいえ
CannotSerializeTransactionException と DeadlockLoserDataAccessException は、Spring では非推奨となっています。 6.0.3 このルールは、Springの非推奨のロック関連例外 CannotSerializeTransactionExceptionDeadlockLoserDataAccessException を使うJavaコードにフラグを立てる。 いいえ
データベース固有のエラーコードに対してレガシー SQLErrorCodeSQLExceptionTranslator を有効にする このルールは、 org.springframework.jdbc* パッケージの使用にフラグを立てる。 Spring Framework 6.0 ベンダー固有のエラーコードを回避する新しい例外トランスレータ SQLExceptionSubclassTranslator に切り替える いいえ
SimpleEvaluationContext 配列の割り当てを無効にする このルールは、 org.springframework.expression.spel.support.SimpleEvaluationContextExpression.getValue(...) の併用にフラグを立てる。 いいえ