第7章 Eclipse Vert.x のアプリケーションの例
Eclipse Vert.x ランタイムは、サンプルアプリケーションを提供します。OpenShift でアプリケーションの開発を開始すると、サンプルアプリケーションをテンプレートとして使用できます。
これらのサンプルアプリケーションは Developer Launcher でアクセスできます。
すべてのサンプルアプリケーションを以下にダウンロードおよびデプロイできます。
- x86_64 アーキテクチャー - 本ガイドのアプリケーションの例では、サンプルアプリケーションを x86_64 アーキテクチャーにビルドおよびデプロイする方法を説明します。
- s390x アーキテクチャー - IBM Z インフラストラクチャーでプロビジョニングされた OpenShift 環境にサンプルアプリケーションをデプロイするには、コマンドに関連する IBM Z イメージ名を指定します。
- ppc64le アーキテクチャー - IBM Power Systems インフラストラクチャーにプロビジョニングされた OpenShift 環境にアプリケーションのサンプルをデプロイするには、コマンドで関連する IBM Power Systems イメージ名を指定します。
イメージ名の詳細は、「Eclipse Vert.x でサポートされる Java イメージ」セクションを参照してください。
サンプルアプリケーションの一部には、ワークフローを実証するために Red Hat Data Grid などの他の製品も必要になります。この場合は、これらの製品のイメージ名を、サンプルアプリケーションの YAML ファイルで関連する IBM Z および IBM Power System のイメージ名に変更する必要もあります。
7.1. Eclipse Vert.x の REST API Level 0 サンプル
以下の例は、実稼働環境での実行を目的としていません。
上達度レベルの例: Foundational
REST API Level 0 サンプルでできること
REST API Level 0 サンプルでは、REST フレームワークを使用して、HTTP 経由でビジネスオペレーションをリモートプロシージャコールエンドポイントにマッピングする方法が示されています。これは、Richardson Maturity Model の Level 0 に対応します。REST およびその基本的な原則を使用して HTTP エンドポイントを作成すると、API を柔軟にプロトタイプおよび設計することができます。
この例では、HTTP プロトコルを使用してリモートサービスと対話するためのメカニズムが導入されました。これにより、以下が可能になります。
-
api/greeting
エンドポイントで HTTPGET
要求を実行します。 -
Hello, World!
で構成されるペイロードを使用して JSON 形式でレスポンスを受け取ります。文字列。 -
String 引数を渡し、
api/greeting
エンドポイントで HTTPGET
要求を実行します。これにより、クエリー文字列にname
要求パラメーターが使用されます。 -
Hello, $name!
のペイロードを含む JSON 形式の応答を受信します。$name
は、要求に渡されたname
パラメーターの値に置き換えられます。
7.1.1. REST API Level 0 設計トレードオフ
良い点 | 悪い点 |
---|---|
|
|
7.1.2. REST API Level 0 サンプルアプリケーションの OpenShift Online へのデプロイメント
以下のオプションのいずれかを使用して、OpenShift Online で REST API Level 0 サンプルアプリケーションを実行します。
各メソッドは、同じ oc
コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc
コマンドを実行する自動デプロイメントワークフローが提供されます。
7.1.2.1. developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Red Hat Developer Launcher Web インターフェースから OpenShift にデプロイする方法を説明します。
前提条件
- OpenShift Online のアカウント。
手順
- ブラウザーで developers.redhat.com/launch URL に移動します。
- 画面上の指示に従って、Eclipse Vert.x でアプリケーションのサンプルを作成して起動します。
7.1.2.2. CLI クライアント oc
の認証
oc
コマンドラインクライアントを使用して OpenShift Online でアプリケーションのサンプルを使用するには、OpenShift Online Web インターフェースによって提供されるトークンを使用してクライアントを認証する必要があります。
前提条件
- OpenShift Online のアカウント。
手順
- ブラウザーで OpenShift Online URL に移動します。
- ユーザー名の横にある Web コンソールの右上にあるクエスチョンマークアイコンをクリックします。
- ドロップダウンメニューで Command Line Tools を選択します。
-
oc login
コマンドをコピーします。 端末にコマンドを貼り付けます。このコマンドは、認証トークンを使用して CLI クライアント
oc
を OpenShift Online アカウントで認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKEN
Copy to Clipboard Copied!
7.1.2.3. CLI クライアント oc
を使用した REST API Level 0 サンプルアプリケーションのデプロイメント
このセクションでは、REST API Level 0 サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」を参照してください。
-
認証された
oc
クライアント。詳細は、「CLI クライアントoc
の認証」を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
Copy to Clipboard Copied! または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zip
Copy to Clipboard Copied! OpenShift で新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAME
Copy to Clipboard Copied! - アプリケーションの root ディレクトリーに移動します。
Maven を使用して OpenShift へのデプロイメントを開始します。
mvn clean fabric8:deploy -Popenshift
$ mvn clean fabric8:deploy -Popenshift
Copy to Clipboard Copied! このコマンドは、Fabric8 Maven プラグインを使用して OpenShift で S2I プロセス を起動し、Pod を起動します。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ oc get pods -w NAME READY STATUS RESTARTS AGE MY_APP_NAME-1-aaaaa 1/1 Running 0 58s MY_APP_NAME-s2i-1-build 0/1 Completed 0 2m
Copy to Clipboard Copied! MY_APP_NAME-1-aaaaa
Pod は、完全にデプロイされて起動すると、ステータスがRunning
になるはずです。特定の Pod 名が異なります。中間の数字は新規ビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。アプリケーションのサンプルをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080
Copy to Clipboard Copied! Pod のルート情報には、アクセスに使用するベース URL が提供されます。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME
をベース URL として使用し、アプリケーションにアクセスします。
7.1.3. REST API Level 0 サンプルアプリケーションの Minishift または CDK へのデプロイメント
以下のオプションのいずれかを使用して、REST API Level 0 サンプルアプリケーションを Minishift または CDK でローカルに実行します。
7.1.3.1.
この情報は、Minishift または CDK の開始時に提供されます。
前提条件
手順
- Minishift または CDK を起動したコンソールに移動します。
Minishift または CDK 起動時のコンソール出力の例
... -- Removing temporary directory ... OK -- Server Information ... OpenShift server started. The server is accessible via web console at: https://192.168.42.152:8443 You are logged in as: User: developer Password: developer To login as administrator: oc login -u system:admin
... -- Removing temporary directory ... OK -- Server Information ... OpenShift server started. The server is accessible via web console at: https://192.168.42.152:8443 You are logged in as: User: developer Password: developer To login as administrator: oc login -u system:admin
Copy to Clipboard Copied!
7.1.3.2.
前提条件
- 詳細は、「」を参照してください。
手順
- 画面上の指示に従って、Eclipse Vert.x でアプリケーションのサンプルを作成して起動します。
7.1.3.3. CLI クライアント oc
の認証
oc
コマンドラインクライアントを使用して Minishift または CDK でサンプルアプリケーションを使用するには、Minishift または CDK Web インターフェースが提供するトークンを使用してクライアントを認証する必要があります。
前提条件
- 詳細は、「」を参照してください。
手順
- ブラウザーで Minishift または CDK URL に移動します。
- ユーザー名の横にある Web コンソールの右上にあるクエスチョンマークアイコンをクリックします。
- ドロップダウンメニューで Command Line Tools を選択します。
-
oc login
コマンドをコピーします。 端末にコマンドを貼り付けます。このコマンドは、認証トークンを使用して、Minishift または CDK アカウントで CLI クライアント
oc
を認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKEN
Copy to Clipboard Copied!
7.1.3.4. CLI クライアント oc
を使用した REST API Level 0 サンプルアプリケーションのデプロイメント
このセクションでは、REST API Level 0 サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- 詳細は、「」を参照してください。
-
認証された
oc
クライアント。詳細は、「CLI クライアントoc
の認証」を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
Copy to Clipboard Copied! または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zip
Copy to Clipboard Copied! OpenShift で新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAME
Copy to Clipboard Copied! - アプリケーションの root ディレクトリーに移動します。
Maven を使用して OpenShift へのデプロイメントを開始します。
mvn clean fabric8:deploy -Popenshift
$ mvn clean fabric8:deploy -Popenshift
Copy to Clipboard Copied! このコマンドは、Fabric8 Maven プラグインを使用して OpenShift で S2I プロセス を起動し、Pod を起動します。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ oc get pods -w NAME READY STATUS RESTARTS AGE MY_APP_NAME-1-aaaaa 1/1 Running 0 58s MY_APP_NAME-s2i-1-build 0/1 Completed 0 2m
Copy to Clipboard Copied! MY_APP_NAME-1-aaaaa
Pod は、完全にデプロイされて起動すると、ステータスがRunning
になるはずです。特定の Pod 名が異なります。中間の数字は新規ビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。アプリケーションのサンプルをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080
Copy to Clipboard Copied! Pod のルート情報には、アクセスに使用するベース URL が提供されます。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME
をベース URL として使用し、アプリケーションにアクセスします。
7.1.4. REST API Level 0 サンプルアプリケーションの OpenShift Container Platform へのデプロイメント
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「REST API Level 0 サンプルアプリケーションの OpenShift Online へのデプロイメント」の手順に従って、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
7.1.5. Eclipse Vert.x の未変更の REST API Level 0 サンプルアプリケーションとの対話
この例では、GET 要求を受け入れるデフォルトの HTTP エンドポイントを提供します。
前提条件
- アプリケーションの実行
-
curl
バイナリーまたは Web ブラウザー
手順
curl
を使用して、サンプルにGET
要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting { "content" : "Hello, World!" }
Copy to Clipboard Copied! curl
を使用して、例に対して URL パラメーターname
を付けてGET
要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting?name=Sarah
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting?name=Sarah { "content" : "Hello, Sarah!" }
Copy to Clipboard Copied!
ブラウザーから、例で提供されているフォームを使用して、これらの同じ対話を実行することもできます。フォームは、プロジェクト http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME
の root にあります。
7.1.6. REST API Level 0 のサンプルアプリケーション統合テストの実行
このサンプルアプリケーションには、自己完結型の統合テストセットが含まれます。OpenShift プロジェクト内で実行する場合、テストは以下を行います。
- アプリケーションのテストインスタンスをプロジェクトにデプロイします。
- そのインスタンスで個別のテストを実行します。
- テストが完了したら、プロジェクトからアプリケーションのすべてのインスタンスを削除します。
統合テストを実行すると、サンプルアプリケーションの既存インスタンスがすべて、ターゲット OpenShift プロジェクトから削除されます。サンプルアプリケーションが正しく削除されないようにするには、テストを実行するために別の OpenShift プロジェクトを作成して選択してください。
前提条件
-
認証された
oc
クライアント。 - 空の OpenShift プロジェクト。
手順
次のコマンドを実行して統合テストを実行します。
mvn clean verify -Popenshift,openshift-it
$ mvn clean verify -Popenshift,openshift-it
7.1.7. REST リソース
REST の背景および関連情報は、以下を参照してください。
- Architectural Styles and the Design of Network-based Software Architectures - Representational State Transfer (REST)
- Richardson Maturity Model
- JSR 311: JAX-RS: The JavaTM API for RESTful Web Services
- Some Rest with Eclipse Vert.x
- Spring Boot の REST API Level 0 の例
- Thorntail の REST API Level 0 の例
- REST API Level 0 for Node.js