如果您要遷移至最新支援的 Java 版本,且應用程式未使用舊版隨附服務,則必須將 App Engine Java 8 Web 應用程式重新封裝為可執行的 JAR 檔案。
應用程式必須有 Main
類別,啟動網路伺服器來回應通訊埠 8080 的 HTTP 要求,這可能由 PORT
環境變數指定。
例如:
WAR 遷移範例 (Java 11)
以下操作說明示範如何將 App Engine Java 8 hello-world
應用程式重新封裝為 JAR,以便在 Java 11 執行階段中執行。
遷移作業會使用 appengine-simple-jetty-main
構件。這會提供 Main
類別,其中包含簡單的 Jetty 網路伺服器,可載入 WAR 檔案並將應用程式封裝至可執行的 JAR 檔案:
將 Embedded Jetty Server 構件複製到本機電腦:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
您也可以下載 zip 格式的範例檔案,之後再將檔案解壓縮。
變更為包含範例程式碼的目錄:
cd java-docs-samples/appengine-java11/appengine-simple-jetty-main/
在本機安裝依附元件:
mvn install
在專案的
pom.xml
檔案中加入以下程式碼:appengine-simple-jetty-main
依附元件:maven-dependency
外掛程式: App Engine 會部署${build.directory}/appengine-staging
目錄中的檔案。在建構作業中新增maven-dependency
外掛程式後,App Engine 會將您指定的依附元件安裝到正確的資料夾。
在
app.yaml
檔案中建立entrypoint
元素,呼叫appengine-simple-jetty-main
物件並將 WAR 檔案做為引數傳遞。例如,請參閱helloworld-servlet
範例app.yaml
檔案:如要在本機執行應用程式,請按照下列步驟操作:
封裝應用程式:
mvn clean package
以 WAR 檔案做為引數啟動伺服器。
舉例來說,您可以在
helloworld-servlet
範例中啟動伺服器,方法是從java-docs-samples/appengine-java11/appengine-simple-jetty-main/
資料夾執行下列指令:mvn exec:java -Dexec.args="../helloworld-java8/target/helloworld.war"
在網路瀏覽器中,輸入下列網址:
如要部署您的應用程式:
gcloud 工具
gcloud app deploy
Maven 外掛程式
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
將 PROJECT_ID 替換為專案 ID。 Google Cloud 如果
pom.xml
檔案已指定專案 ID,則不需要在執行的指令中加入-Dapp.deploy.projectId
屬性。