Unterschiede im Verhalten von Jakarta EE 9
Bei der Umstellung auf Jakarta EE 9 in Liberty kann es aufgrund von Implementierungsänderungen und Spezifikationsklärungen zu Verhaltensunterschieden in Ihrer Anwendung kommen. Liberty erfordert keine Umstellung auf die nächste Java EE -Version und kann die vorhandenen Features Java EE 6, Java EE 7 oder Java EE 8 weiterhin verwenden. Wenn Sie auf die Version Jakarta EE 9 wechseln, müssen alle von der Anwendung verwendeten Technologien auf die Version Jakarta EE 9 migriert werden.
allgemeine Regeln
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| Aktualisieren Sie Ihre Anwendung, damit der neue Jakarta EE-Paketname verwendet wird | In Jakarta EE 9 hat sich der Paketnamensraum von javax.* zu jakarta.* geändert. |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta |
Jakarta Enterprise Beans 4.0
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| Unterschiede in EJB-Kontexten | Die Methoden getCallerIdentity(), getEnvironment() und isCallerRole(java.security.Identity) der Klasse javax.ejb.EJBContext wurden entfernt. Die Methode getMessageContext() aus der Klasse javax.ejb.SessionContext wurde entfernt. |
Nein |
Jakarta Management
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| Die Jakarta Management-Spezifikation wurde entfernt | Diese Regel markiert Referenzen auf die Pakete javax.management.j2ee, javax.management.j2ee.statistics
undand org.omg.stub.javax.management.j2ee mit Flags. |
Nein |
Jakarta XML-Web-Services 3.0
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| Namen der Apache Web Services Security-Pakete aktualisieren | Die Pakete org.apache.ws.security und org.apache.ws.security.components.crypto wurden durch die Pakete org.apache.wss4j.common.ext und
org.apache.wss4j.common.crypto ersetzt. |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.UpdateApacheWSSecurityPackages |
RESTful Web Services 3.0
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| @ApplicationPath, @Path und @Provider sind jetzt Annotationen, die CDI-Beans definieren | Diese Regel markiert die Verwendung der Annotationen @ApplicationPath, @Path und @Provider. | Nein |
| Anwendungsunterklassen, die die CDI-Injektion verwenden, müssen mit der Annotation @ApplicationPath annotiert werden | Diese Regel markiert die Verwendung von CDI-Annotationen in einer Anwendungsunterklasse ohne die Verwendung der Annotation @ApplicationPath. | Nein |
| Verwendung von Methoden für untergeordnete Ressourcen und Querverweise für untergeordnete Ressourcen mit demselben Pfad vermeiden | Diese Regel markiert Annotationen der javax.ws.rs.Path-Methode, die denselben Pfad für mehrere Methoden definieren. |
Nein |
| Verhaltensänderung bei Verwendung der Methode Application.getSingletons() | Diese Regel kennzeichnet Implementierungen der Methode Application.getSingletons(). |
Nein |
| Prüfen, ob sich das Verhalten von HttpHeaders.getRequestHeader(String) geändert hat | Diese Regel kennzeichnet Java-Code, der die Methode javax.ws.rs.core.HttpHeaders.getRequestHeader(String) aufruft. |
Nein |
| Prüfen, ob sich das Verhalten von Response.readEntity() geändert hat | Diese Regel kennzeichnet Java-Code, der die Methode javax.ws.rs.core.Response.readEntity() aufruft. |
Nein |
| Den Rückgabewert von Application.getClasses() auf lokale Schnittstellen prüfen | Diese Regel kennzeichnet Implementierungen der Methode javax.ws.rs.Application.getClasses(). |
Nein |
| JAX-RS-Parameter können nicht in einen Konstruktor der Ressourcenklasse eingefügt werden | Diese Regel markiert JAX-RS-Parameter, die in einen Konstruktor der Ressourcenklasse eingefügt werden. | Nein |
| JSON4JObjectProvider ist nicht verfügbar | Diese Regel kennzeichnet die Klasse com.ibm.websphere.jaxrs.providers.json4j.JSON4JObjectProvider. |
Nein |
| Eigenschaften des Liberty RESTful Web Services-Clients sind veraltet | Die ClientBuilder Eigenschaften von com.ibm.ws.jaxrs.client.receive.timeout und com.ibm.ws.jaxrs.client.connection.timeout sind in Jakarta EE9 veraltet. Verwenden Sie stattdessen die Methoden ClientBuilder connectTimeout und readTimeout. |
Nein |
| Eigenschaften mit Nullwerten werden in der API "jakarta.ws.rs.client" entfernt | Verwenden Sie Eigenschaften mit Nullwerten
nicht mit der API jakarta.ws.rs.client. |
Nein |
| Entfernen Sie das Platzhalterzeichen aus den Werten der 'ApplicationPath'-Annotation | Diese Regel markiert alle javax.ws.rs.ApplicationPath-Annotationen mit einem angegebenen Wert, der mit /* endet. |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.ApplicationPathWildcardNoLongerAccepted |
| Die serverseitige asynchrone Unterstützung muss aktiviert sein | Diese Regel kennzeichnet die Verwendung der @Suspended-Annotationen für den Parametertyp AsyncResponse in einer JAX-RS-Ressourcenmethode. | Nein |
Spring Framework 6.0
| Regelname | Regelbeschreibung | Automatisierte Korrektur |
|---|---|---|
| Spring Framework auf eine unterstützte Version von Jakarta EE 9 aktualisieren | Diese Regel markiert alle Dateien vom Typ spring-core-X.X.X.RELEASE.jar/META-INF/MANIFEST.MF mit einem Wert kleiner als 6 für die Implementierungsversion. |
spring-framework-60.yml org.openrewrite.java.spring.framework.UpgradeSpringFramework_6_0 |
| Verwenden Sie nicht Ehcache 2.x | Diese Regel kennzeichnet die Verwendung des Pakets org.springframework.cache.ehcache oder das Vorhandensein der Datei ehcache.xml . |
Nein |
| Verwenden Sie keine dedizierten Spring EJB-Zugriffsklassen, um EJB zu suchen | Diese Regel kennzeichnet die Verwendung des org.springframework.ejb.access Pakets in Java .class Dateien oder .xml Dateien. Für Spring 6.0 verwenden Sie JNDI direkt über JndiObjectFactoryBean in Java-Dateien oder jee:jndi-lookup in .xml -Dateien. |
Nein |
| Mit @Async annotierte Methoden müssen entweder Future oder void zurückgeben | Diese Regel kennzeichnet Java-Methoden, die mit org.springframework.scheduling.annotation.Async annotiert sind und andere Typen als void, Future<t>, CompletableFuture<t> oder ListenableFuture<t> zurückgeben. |
Nein |
| Die Klasse SourceHttpMessageConverter ist standardmäßig nicht registriert | Diese Regel kennzeichnet die Verwendung der Schnittstelle javax.xml.transform.Source , wenn die Klasse SourceHttpMessageConverter nicht gefunden wird. In Spring Framework 6.0 wird die Klasse SourceHttpMessageConverter nicht mehr standardmäßig in Spring MVC oder RestTemplate registriert. |
Nein |
| org.springframework.http.HttpMethod ist jetzt eine Klasse und nicht mehr eine Aufzählung | Diese Regel kennzeichnet die Verwendung von org.springframework.http.HttpMethod , wenn der Code annimmt, dass es sich um eine Aufzählung handelt. |
Nein |
| HttpComponentsClientHttpRequestFactory erfordert jetzt Apache HttpClient 5 | Jede Verwendung von HttpClient 4.x Klassen wie CloseableHttpClient, HttpClient, RequestConfig oder HttpContext aus dem org.apache.http.* Paket innerhalb der HTTP Client-Infrastruktur von Spring (einschließlich Konstruktoren, Methodenaufrufe oder Konfigurationen, die HttpComponentsClientHttpRequestFactory beinhalten) kann zu Kompilierungsfehlern führen und muss aktualisiert werden, um die HttpClient 5.x Äquivalente zu verwenden. |
Nein |
| Vermeiden Sie die Verwendung der veralteten Schnittstelle ListenableFuture | Diese Regel kennzeichnet Klassen, die die Schnittstelle ListenableFuture implementieren. In SpringFramework 6.0 wurde die Schnittstelle ListenableFuture zu Gunsten der Schnittstelle CompletableFuture veraltet. |
Nein |
| CannotSerializeTransactionException und DeadlockLoserDataAccessException sind ab Spring veraltet 6.0.3 | Diese Regel kennzeichnet Java-Code, der die veralteten sperrungsbezogenen Ausnahmen von Spring verwendet CannotSerializeTransactionException und DeadlockLoserDataAccessException. |
Nein |
| Aktivieren von Legacy SQLErrorCodeSQLExceptionTranslator für datenbankspezifische Fehlercodes | Diese Regel kennzeichnet die Verwendung des Pakets org.springframework.jdbc* . Spring Framework 6.0 wechselt zu einem neuen Ausnahmeübersetzer SQLExceptionSubclassTranslator , der herstellerspezifische Fehlercodes vermeidet |
Nein |
| SimpleEvaluationContext deaktiviert Array-Zuweisungen | Diese Regel kennzeichnet die Verwendung von org.springframework.expression.spel.support.SimpleEvaluationContext mit Expression.getValue(...). |
Nein |