如果您要遷移至最新支援的 Java 版本,且應用程式未使用舊版隨附服務,就必須將 App Engine 網頁應用程式重新封裝為可執行的 JAR 檔案。
應用程式必須有 Main 類別,可啟動網路伺服器,回應通訊埠 8080 的 HTTP 要求,這可能由 PORT 環境變數指定。
例如: <
WAR 遷移範例 (Java 21)
以下操作說明示範如何將 App Engine hello-world WAR 應用程式重新封裝為 JAR,以便在 Java 21 執行階段中執行。
遷移作業會使用 appengine-simple-jetty-main 構件。這會提供 Main 類別,其中包含載入 WAR 檔案的簡單 Jetty 網路伺服器,並將應用程式封裝至可執行的 JAR 檔案:
將 Embedded Jetty Server 構件複製到本機電腦:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples您也可以下載 zip 格式的範例檔案,然後將檔案解壓縮。
變更為包含程式碼範例的目錄:
cd java-docs-samples/flexible/repacking-legacy-applications/appengine-simple-jetty-main/建構 Jetty 執行器 JAR:
mvn install這會在
target/目錄中產生jetty-jar-with-dependencies.jar。為 Jetty 伺服器設定
pom.xml建構檔案:- 編譯器屬性 (Java 21):
- 內嵌 Jetty 依附元件: <0x0A
maven-assembly-plugin設定:
放置產生的
jetty-jar-with-dependencies.jar和應用程式 WAR 檔案。例如,位於相同目錄的helloworld.war。在應用程式目錄中建立
app.yaml檔案,指定 Java 21 執行階段,並建立entrypoint元素來呼叫jetty-jar-with-dependencies.jar檔案,然後將 WAR 檔案做為引數傳遞:runtime: java21 entrypoint: 'java -jar jetty-jar-with-dependencies.jar helloworld.war'如要在本機執行應用程式,請按照下列步驟操作:
以 WAR 檔案做為引數啟動伺服器:
java -jar jetty-jar-with-dependencies.jar helloworld.war在網路瀏覽器中,輸入下列網址:
如要部署您的應用程式:
gcloud 工具
gcloud app deploy
Maven 外掛程式
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
將 PROJECT_ID 替換為 Google Cloud 專案 ID。如果
pom.xml檔案已指定專案 ID,則不需要在執行的指令中加入-Dapp.deploy.projectId屬性。