目次


Java でクラウド・アプリケーションを作成および管理する

Cloud Foundry の Java クライアント・ライブラリーを Bluemix で使用する

Comments

IBM Bluemix は、IBM の Platform as a Service (PaaS) ソリューションとして、アプリケーションを実行するために必要なインフラストラクチャーと柔軟性のすべてを提供します。Bluemix は、クラウド内でアプリケーションを作成、デプロイ、管理するためのオープンソース・プラットフォームである Cloud Foundry をベースにしています。

通常、ユーザーは Bluemix 内のアプリケーションを操作するために、Cloud Foundry のコマンド・ライン・インターフェース (CLI) から cf コマンドを使用します。この CLI からは、例えば cf pushcf deletecf start/stop など、Bluemix でのさまざまな操作を実行することができます。

CLI の他にも、Cloud Foundry ではクラウド内でアプリケーションを作成および管理するために利用できるツールとライブラリーを用意しています。そのうち、このチュートリアルでは Cloud Foundry の Java クライアント・ライブラリーを Bluemix で使用する方法を紹介します。

アプリケーションを開発するために必要となるもの

  • Bluemix アカウント
  • Cloud Foundry の Java クライアント・ライブラリー

ステップ 1. ライブラリーを入手する

プロジェクトで Cloud Foundry の Java クライアント・ライブラリーを使用するには、pom.xml ファイルに以下の依存関係を追加する必要があります。

  <dependencies>
  	<dependency>
  		<groupId>org.cloudfoundry</groupId>
  		<artifactId>cloudfoundry-client-lib</artifactId>
  		<version>1.0.2</version>
  	</dependency>
  </dependencies>

Github で、このライブラリーのソース・コードにアクセスしてダウンロードすることもできます。

ステップ 2. Bluemix でアプリケーションを作成して管理する

ここで、Cloud Foundry の Java クライアント・ライブラリーを使用して、Bluemix でアプリケーションを作成および管理する方法を探っていきましょう。

Bluemix にログインする

Bluemix にログインして、アプリケーションの作成または管理を行えるようにする必要があります。それには、CloudFoundryClient クラスのインスタンスを作成して、Bluemix API (例えば、https://api.ng.bluemix.net) にアクセスするために提供された資格情報と URL を設定します。また、使用する組織とスペースも指定する必要があります。デフォルトでは、スペースには dev、組織にはユーザー ID が設定されます。

String user = "user@email.com";
String password = "password";
String orgName = user;
String spaceName = "dev";

// login
CloudCredentials credentials = new CloudCredentials(user, password);
URL target = URI.create("https://api.ng.bluemix.net").toURL();
CloudFoundryClient client = new CloudFoundryClient(credentials, target, orgName, spaceName);
client.login();

Bluemix でアプリケーションの作成や管理を行った後は、ログアウトする必要があります。

client.logout();

新規アプリケーションを作成する

CloudFoundryClient クラスには、クラウド内でアプリケーションを作成および管理するためのメソッドがいくつか用意されています。新しいアプリケーションを作成するには、createApplication メソッドを呼び出して、以下の情報を提供します。

  • 新しく作成するアプリケーションの名前
  • アプリケーションにアクセスするために使用する URL のリスト (例えば、http://<appname>.mybluemix.net)
  • アプリケーションで使用できるメモリー容量 (MB 単位。128、256、512 など)
  • アプリケーションで使用するサービスのリスト
  • Staging オブジェクト。ここに、ビルドパックを指定します。また、必要に応じてアプリケーションを起動するコマンドもこのオブジェクトに指定します。

Bluemix に用意されているビルドパックを調べるには、cf buildpacks コマンドを使用します。使用できるビルドパックには、例えば liberty-for-java、sdk-for-nodejs、java_buildpack、ruby_buildpack などがあります。

以下のコードに、NodeJS アプリケーションを作成する方法を示します。

String appName = "my-node-app";
String baseUrl = "http://" + appName + ".mybluemix.net/";
List<String> uris = Arrays.asList(baseUrl);

Integer memory  = 128;
List<String> serviceNames = null;

String command = "node app.js";
String buildpack = "sdk-for-nodejs";

// creating a new application
client.createApplication(appName, new Staging(command, buildpack), memory, uris, serviceNames);

アプリケーションを作成したら、使用するソース・コードまたはバイナリーを Bluemix にアップロードします。

// uploading the zip file
File appFile = new File("nodeApp.zip");
client.uploadApplication(appName, appFile);

以下のコマンドを実行すると、アプリケーションを起動することができます。

// starting the application
client.startApplication(appName);

アプリケーションを管理する

CloudFoundryClient クラスを使用して Bluemix 上で実行できる操作には、他にもアプリケーションの削除、アプリケーションの停止、サービスの作成、アプリケーションへのサービスのバインドなどがあります。例として、以下のコードに、Bluemix 内で SQL Database サービスを利用する Java Web アプリケーションを作成および管理する方法を示します。

// creating the db service
CloudService service = new CloudService();
service.setLabel("sqldb");
service.setName("mydb");
service.setPlan("sqldb_small");
client.createService(service);

// creating a new application
String appName = "my-java-web-app";
String baseUrl = "http://" + appName + ".mybluemix.net/";
List<String> uris = Arrays.asList(baseUrl);
List<String> serviceNames =  Arrays.asList("mydb");
client.createApplication(appName, new Staging(null, "liberty-for-java"),
				512, uris, serviceNames);

// uploading the war file
File warFile = new File("webApp.war");
client.uploadApplication(appName, warFile);

// starting the application
client.startApplication(appName);

// checking the application state
Assert.assertEquals("STARTED", client.getApplication(appName).getState().toString());

// stopping the application
client.stopApplication(appName);
Assert.assertEquals("STOPPED", client.getApplication(appName).getState().toString());
			
// updating the application
File warFile2 = new File("webApp2.war");
client.uploadApplication(appName, warFile2);

// binding other service to the application
client.bindService(appName, "otherService");
client.startApplication(appName);

// deleting the application
client.deleteApplication(appName);

// deleting the service
client.deleteService("mydb");

cf marketplace コマンドを使用すると、Bluemix で使用可能なサービスとプランの情報を入手することができます。

ステップ 3. 自分で試してみる

このチュートリアルに記載したサンプル・コードをベースに、Cloud Foundry の Java ライブラリーの Bluemix 用ラッパーを作成しました。このラッパーを使用すると、Bluemix に新しいアプリケーションをデプロイするのがさらに簡単になります。ラッパーをテストするには、ソース・コードをダウンロードして、JUnit テスト・クラス BluemixClientTest を実行してください。このクラスには、NodeJS と Java (WAR) アプリケーションのそれぞれをデプロイする方法を説明する 2 つのテストが含まれています。

まとめ

このチュートリアルでは、Cloud Foundry の Java クライアント・ライブラリーを使用して、Bluemix 内でアプリケーションを作成および管理する方法を紹介しました。ここで取り上げた操作の他にも、このライブラリーを利用して実行できる操作がいくつもあります。例えば、アプリケーションで使用可能なメモリー容量を増やしたり、インスタンスの数を変更したり、アプリケーションのログ・ファイルを取得したりするなどの操作です。

CF CLI から実行できる操作はすべて、Java ライブリーからも実行することができます。Java ライブリーを利用して操作を実行すれば、Bluemix のアプリケーションのデプロイメントと管理を自動化することもできます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Java technology
ArticleID=1003472
ArticleTitle=Java でクラウド・アプリケーションを作成および管理する
publish-date=04232015