Eseguire l'upgrade di un'applicazione esistente

Per continuare a ricevere aggiornamenti della sicurezza ed essere idoneo all'utilizzo, devi eseguire l'upgrade delle tue applicazioni alla versione di runtime più recente supportata all'assistenza tecnica. Dovresti anche valutare la migrazione a Cloud Run, l'ultima evoluzione di Google Cloud Serverless. Cloud Run è progettato migliorare l'esperienza con App Engine, incorporando molti dei migliori caratteristiche sia dell'ambiente standard che dell'ambiente flessibile. Per confrontare le funzionalità e capire come eseguire la migrazione, consulta la guida di confronto tra App Engine e Cloud Run

Il processo di upgrade di un'app esistente dipende dalla versione del runtime attualmente la tua app usa:

  • Java 8: devi eseguire la migrazione dell'app alla versione Java supportata più recente. Il 31 gennaio 2024 è terminato il supporto di Java 8. Il tuo le applicazioni Java 8 esistenti continueranno a essere eseguite e riceveranno traffico. Tuttavia, non potrai eseguire il deployment di nuove applicazioni o aggiornare applicazioni esistenti che utilizzano i runtime dopo la data di fine del supporto.

  • Java 11 o Java 17:

    Questi runtime sono versioni Java supportate. Per continuare l'upgrade alla versione di assistenza più recente, segui questi passaggi:

    • Aggiorna il file app.yaml specificando la versione di Java su cui vuoi eseguire l'app. Ad esempio:

        runtime: javaVERSION
      

      Dove VERSION è il numero di versione MAJOR.

      Esempio: per Java 21, specifica 21 come runtime: java21. Per ulteriori informazioni, consulta la panoramica del runtime Java.

    • Se utilizzi servizi in bundle precedenti, devi eseguire l'upgrade delle tue app in modo che vengano eseguite su:

      • Java Enterprise Edition 10 (EE10 - predefinito, consigliato): Java EE10 non supporta le API javax.servlet.* e richiede l'aggiornamento le tue app e le dipendenze di terze parti per utilizzare artefatti Java più recenti come lo spazio dei nomi Jakarta.

      • Java Enterprise Edition 8 (EE8): Java EE8 consente di utilizzare javax.servlet.* API, ma devi apportare piccole modifiche alla configurazione al file appengine-web.xml.

      Per tutte le opzioni, consulta Eseguire l'upgrade a Java 21 per i servizi in bundle legacy.

Upgrade a Java 21 per i servizi in bundle legacy

Compatibilità del runtime Java

Fai riferimento alla tabella seguente per capire quali versioni di Java sono compatibili con le tue versioni di Jetty e servlet:

Enterprise Edition (EE) Versione Jetty Versione Java Servlet Compatibilità
EE7 9,4 11 2,5 o 3,1
EE7 9,4 17 2,5 o 3,1
EE8 12 21 2.5 e versioni successive Java EE8 è compatibile con le versioni precedenti di Java EE6. Per ulteriori informazioni, vedi Eseguire l'upgrade a Java 21 su EE8.
EE10 12 21 6.0 (opzione consigliata). Java 21 è configurato per eseguire EE10 per impostazione predefinita. Per utilizzare Java EE10, devi aggiornare i servlet e le dipendenze dell'applicazione in modo che includano lo spazio dei nomi Jakarta. Per ulteriori informazioni, vedi Eseguire l'upgrade di Java 21 su EE10.

Esegui l'upgrade a Java 21 su EE10

Per utilizzare Java 21 su Enterprise Edition 10 (EE10), devi eseguire l'upgrade dei servlet e delle dipendenze dell'applicazione nei file Maven e Gradle per includere lo spazio dei nomi Jakarta:

  1. Cambia il numero di versione nel file di configurazione di web.xml in version=6.0. Ad esempio:

        <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
          version="6.0">
          ...
        </web-app>
    
  2. Rinomina i servlet e le dipendenze delle applicazioni da javax.servlet.* a jakarta.servlet.*:

         import jakarta.servlet.ServletException;
         import jakarta.servlet.annotation.WebServlet;
         import jakarta.servlet.http.Cookie;
         import jakarta.servlet.http.HttpServlet;
         import jakarta.servlet.http.HttpServletRequest;
         import jakarta.servlet.http.HttpServletResponse;
    
         @WebServlet(name = "viewer", urlPatterns = {"/view"})
         public class MyServlet extends HttpServlet {
        ......
    
  3. Aggiorna le restanti dipendenze di terze parti dell'applicazione agli artefatti Java più recenti a seconda dello spazio dei nomi Jakarta.

  4. (Facoltativo) Java 21 include il supporto per i thread virtuali. Per attivare i thread virtuali, aggiungi Proprietà appengine.use.virtualthreads nel tag system-properties nel tuo appengine-web.xml .

Eseguire l'upgrade a Java 21 su EE8

Puoi continuare a utilizzare le API javax.servlet.* su Java EE8 senza apportare modifiche sostanziali alla configurazione dell'applicazione, perché Jetty 12 offre compatibilità con le versioni precedenti per Java EE6 e versioni successive. Per eseguire le tue applicazioni su Java EE8, devi dichiarare un nuovo Tag system-properties in appengine-web.xml file con la configurazione app.engine.use.EE8 non predefinita:

   <?xml version="1.0" encoding="utf-8"?>
   <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java21</runtime>
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
   </appengine-web-app>

(Facoltativo) Java 21 include il supporto per i thread virtuali. Per attivare thread virtuali, aggiungi la proprietà appengine.use.virtualthreads all'interno del tag system-properties. Esempio: <property name="appengine.use.virtualthreads" value="true"/>