このガイドでは、App Engine スタンダード環境で動作する Java ウェブサービスの作成方法について説明します。Java ランタイムとその仕組みの詳細については、Java ランタイム環境をご覧ください。
準備
まだインストールしていない場合は、次の作業を行ってください。
- 使用する App Engine ランタイム バージョンに Java 開発キット(JDK)の最新バージョンをインストールします。
- サンプルアプリのビルド、実行、デプロイを行う Apache Maven をダウンロードしてインストールします。
要点
- App Engine は実行可能な JAR アプリケーションをアップロードすることにより、アプリケーションを起動します。
- アプリケーションには、PORT 環境変数で指定されたポート(通常は 8080)の HTTP リクエストに応答するウェブサーバーを起動するメインクラスが必要です。
- App Engine にサービスをデプロイするためには、
app.yaml
ファイルが必要です。 - 依存関係を
pom.xml
ファイル内にリストすることで、依存関係を使用できます。詳細については、Java ライブラリの使用をご覧ください。
メインクラスを作成する
ウェブサービスの中核となるのが HTTP サーバーです。このガイドのサンプルコードでは、Spring Boot フレームワークを使用して HTTP リクエストを処理していますが、好みのウェブ フレームワークを自由に使用できます。
Maven ビルドシステムを使用して Java の Spring Boot プロジェクトを生成し、Spring Web の依存関係を含めます。まず、次のリンクをクリックします。
Spring Initializer で、[生成] ボタンをクリックしてプロジェクトを生成し、ダウンロードします。
ダウンロードしたプロジェクトで、
springboot/src/main/java/com/example/appengine/springboot/DemoApplication.java
ファイルを編集して、いくつかの Java インポートと REST hello ハンドラを追加します。package com.example.appengine.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("/") public String hello() { return "Hello world!"; } }
変更後のクラスはコントローラで、Spring Boot の組み込み Tomcat サーバーを起動し、ルートパス(
'/'
)でGET
リクエストに「Hello world!」というテキストを返します。
サーバーをローカルで実行する
サーバーをローカルで実行するには:
Spring Boot Maven プラグインを使用して、ローカルのウェブサーバーを起動します。
mvn spring-boot:run
ウェブブラウザに次のアドレスを入力します。
http://localhost:8080
サンプルアプリから Hello World というメッセージがページに表示されます。ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。
app.yaml
ファイルを作成する
App Engine ランタイム環境で、次の手順でアプリの設定を指定します。
次のディレクトリに
app.yaml
という名前のファイルを作成します。
springboot/src/main/appengine/
ファイルに次の内容を追加します。
Java 21
runtime: java21
app.yaml
ファイルでは、ネットワーク設定やスケーリング設定などを指定することもできます。詳細については、app.yaml
リファレンスをご覧ください。
上記の Spring Initializr リンクを使用した場合、ファイル構造は次のようになっているはずです。
springboot/
pom.xml
src/main/
appengine/
app.yaml
java/com/example/appengine/springboot/
DemoApplication.java
プロジェクトの pom.xml に、アプリケーションのデプロイを可能にする Maven プラグインを追加することもできます。
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<projectId>YOUR_PROJECT_NAME</projectId>
<version>YOUR_VERSION</version>
<promote>false</promote>
</configuration>
</plugin>
次のステップ
これで、適切なポートをリッスンする簡単な Java ウェブサーバーの作成と、app.yaml
ファイルでのランタイムの指定が完了したため、サービスを App Engine にデプロイする準備が整いました。