サポートされている最新バージョンの Java に移行するときに、アプリで以前のバンドル サービスを使用していない場合は、App Engine Java 8 ウェブ アプリケーションを実行可能な JAR ファイルに再パッケージ化する必要があります。
アプリケーションには、ポート 8080 で HTTP リクエストに応答するウェブサーバーを起動する Main クラスが必要です(ポートは PORT 環境変数で指定されている場合もあります)。
例:
WAR 移行の例(Java 11)
次の手順では、App Engine Java 8 hello-world アプリケーションを Java 11 ランタイムで実行する JAR として再パッケージ化する方法を説明します。
この移行では appengine-simple-jetty-main アーティファクトを使用します。これにより、Main クラスにシンプルな Jetty ウェブサーバーが与えられます。Jetty ウェブサーバーは WAR ファイルを読み込み、実行可能な JAR ファイルにパッケージ化します。
ローカルマシンに埋め込み型 Jetty サーバー アーティファクトのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/java-docs-sampleszip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
サンプルコードが入っているディレクトリに移動します。
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プラグインをビルドに追加すると、指定した依存関係が正しいフォルダにインストールされます。
entrypoint要素をapp.yamlファイルに作成してappengine-simple-jetty-mainオブジェクトを呼び出し、WAR ファイルを引数として渡します。たとえば、helloworld-servletサンプルapp.yamlファイルをご覧ください。アプリケーションをローカルで実行するには:
アプリケーションをパッケージ化します。
mvn clean packageWAR ファイルを引数にしてサーバーを起動します。
たとえば、
java-docs-samples/appengine-java11/appengine-simple-jetty-main/フォルダから次のコマンドを実行すると、helloworld-servletサンプルの中のサーバーを起動できます。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 は、 Google Cloud プロジェクトの ID に置き換えます。
pom.xmlファイルですでにプロジェクト ID を指定している場合は、実行するコマンドに-Dapp.deploy.projectIdプロパティを含める必要はありません。