サポートされている最新の 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-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
プラグインをビルドに追加すると、指定した依存関係が正しいフォルダにインストールされます。
entrypoint
要素をapp.yaml
ファイルに作成してappengine-simple-jetty-main
オブジェクトを呼び出し、WAR ファイルを引数として渡します。たとえば、helloworld-servlet
サンプルapp.yaml
ファイルをご覧ください。アプリケーションをローカルで実行するには:
アプリケーションをパッケージ化します。
mvn clean package
WAR ファイルを引数にしてサーバーを起動します。
たとえば、
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
プロパティを含める必要はありません。