内容


使用 Java 创建和管理云应用程序

结合使用 Cloud Foundry Java Client Library 和 Bluemix

Comments

IBM® Bluemix® 是 IBM 的平台即服务 (PaaS) 解决方案,它提供了运行应用程序所需的所有基础架构和灵活性。Bluemix 基于 Cloud Foundry,后者是一个在云中创建、部署和管理应用程序的开源平台。

通常,用户通过 Cloud Foundry 命令行接口 (CLI) 使用 cf 命令与 Bluemix 中的应用程序进行交互。通过该 CLI,您可以在 Bluemix 中运行多个操作,比如 cf pushcf deletecf start/stop

除了该 CLI 之外,Cloud Foundry 还提供了其他工具和库,可使用它们在云中创建和管理应用程序。本教程将介绍如何结合使用 Cloud Foundry Java™ Client Library 与 Bluemix。

构建您的应用程序需要做的准备工作

第 1 步. 获取该库

要在项目中使用 Cloud Foundry Java Client Library ,必须向 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 Client Library 在 Bluemix 中创建和管理应用程序。

登录到 Bluemix

您需要登录到 Bluemix 才能创建或管理您的应用程序。使用您的凭据和用于访问 Bluemix API 的 URL(例如 https://api.ng.bluemix.net)创建 CloudFoundryClient 类的实例。还必须提供要使用的组织和空间。默认情况下,空间为 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)的列表
  • 可供应用程序使用的内存(128、256、512 等,以 MB 为单位)
  • 该应用程序将使用的服务列表
  • 一个 Staging 对象,您在其中指定构件包 (buildpack),如果有必要,指定启动该应用程序的命令

要找到 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 数据库服务的 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 步. 自行尝试

基于本教程中的示例,我创建了用于 Bluemix 的 Cloud Foundry Java 库的包装器。此包装器使将新应用程序部署在 Bluemix 中变得更容易。您可试用一下它,下载源代码 并运行 JUnit 测试类 BluemixClientTest。此类中有两个测试展示了如何部署一个 NodeJS 和一个 Java (WAR) 应用程序。

结束语

本教程展示了如何使用 Cloud Foundry Java Client Library 来在 Bluemix 中创建和管理应用程序。除了这里介绍的操作之外,还可以通过该库执行其他一些操作:增加可供应用程序使用的内存量,更改实例数量,以及获取应用程序的日志文件。

通过 CF CLI 执行的所有操作也可以通过该 Java 库执行,然后可以使用该库自动化应用程序在 Bluemix 中的部署和管理。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Java technology
ArticleID=1010788
ArticleTitle=使用 Java 创建和管理云应用程序
publish-date=07132015