首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

构建一个集成了 Web 服务的可移植 Java 旅行应用程序(4)

构建一个集成了 Web 服务的可移植 Java 旅行应用程序(4)

步骤  8. 将应用程序推送到云中构造和创建应用程序之后,我们就可以在 Bluemix 上部署它们。部署是自动的,即将应用程序从本地 VM 迁移到基于云 的VM 上。
使用 Cloud Foundry CLI cf push 命令启动部署。(在 Cloud Foundry    文档中,部署过程通常称为 推送应用程序。)
1
cf push MyVacations –path MYDIR\MyVacations.war




push      命令执行多个分阶段的任务,比如找到一个容器来运行应用程序,为容器提供合适的软件和系统资源,启动应用程序的一个或多个实例,并在 Cloud      Controller 数据库中保存应用程序的预期状态。
步骤 9. 测试应用程序为了达到测试的目的,您需要对应用程序进行一个简单的运行测试,然后测试应用程序是否是可移植的。
为了简单起见,登录页面允许使用任意用户名和密码进行访问,如图用户在系统中不存在,就会被创建。
登录后,访问搜索页面,插入搜索参数并单击 Search。                        
图 6. 带有结果地图的搜索页面如果单击某个标记,就会显示与该酒店相关的简要信息。
图 7. 带有关于旅店的简要信息的窗口为了在不同的云平台上测试可移植性,我选择在 Pivotal 平台和 Google App Engine 上部署 MyVacations。
要在 GoogleAE 上进行部署,所使用的工具和技术包括:
  • Google App Engine Java SDK 1.8.8
  • Spring 3.1.1
  • Eclipse 4.2+ Google plugin for Eclipse
因为 Google App Engine 支持基于 Spring 框架的 Java Web 应用程序,我的应用程序不需要做任何改动。
Google App Engine SDK (安装在 Eclipse 上) 包含一个 Web          服务器,用于在模拟的本地环境中测试应用程序,这样便可在没有 Google 用户帐号的情况下测试应用程序。(还可以在远程的 Google          服务器上运行应用程序)。
用于 Eclipse 的 Google 插件在 Run 菜单中添加了启动这台服务器的选项。在这种场景中,安装在            Google App Engine 上的 MyVacations 将通过其 RESTful API 调用安装在 Bluemix 上的            UserService 应用程序,这演示了不使用内部平台服务的应用程序的高级可移植性。
图 8. 本地主机上的 Google App Engine本地主机上的 Google App Engine" width="704" height="63">在 Pivotal 上进行部署使用的工具和技术包括:
  • Spring 3.1.1
  • JDK 7
  • Spring Tool Suite 3.4.0+ Cloud Foundry Integration for Eclipse              1.5.1
Cloud Foundry plugin for Eclipse 支持在 Pivotal                平台上进行部署。这样便可在目标环境上直接测试应用程序,无需离开 IDE。您需要一个有效的 Pivotal 用户帐号。
图 9. Pivotal Cloud Foundry 上的部署在这个平台上,您无需进行任何改动便可部署应用程序,也可以进行小小改动后部署 UserService 应用程序。
结束语这个应用程序仅仅显示了将内部和外部服务与云应用程序集成在一起的一些可能性。我利用了 Bluemix 具有的一些优点:
  • 提供需求降低(应用程序或基础架构)
  • 可伸缩性
  • 轻松集成内部服务
  • 管理轻松
  • 在类似云平台上的可移植性
在可移植性问题上,因为 Bluemix 基于 Cloud                  Foundry,您可以自由地将它迁移到其他平台。让我们通过两个例子演示一下这种可移植性:
  • 将 MyVacations 部署到 Pivotal 云时无需任何改动  Pivotal 同样基于 Cloud                    Foundry,因此几乎可以完全兼容。UserService 使用 Bluemix 平台上的 MongoDB 服务;在 Pivotal                    上也有一个类似的 MongoDB 服务,但您必须修改来自 MongoConfiguration 类中 VCAP_SERVICES 变量的                    URL 连接。
  • 对于不是基于 Cloud Foundry 的云而言(这个例子中就是 Google 的云),部署 MyVacations                      也很简单。(MongoDB 不在 Google 平台提供的服务中,因此我选择了另一个解决方案作为 "Big Table" 服务(和                      MongoDB 不同),它是一个用于数据持久的专门解决方案。)只要将 appengine-web.xmlfile                      添加到 web-inf 目录便可启用 Google Application Engine,如下所示:                                            
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <application>_your_app_id_</application>
      <version>1</version>
      <threadsafe>true</threadsafe>
    </appengine-web-app>




最后要注意的是,您必须将云应用程序设计为能够利用分布式平台的潜力,同时提供可靠、高效与快速的服务。我认为我的 MyVacations  应用程序大体上做到了这一点。当然,在 UserService  遇到大量请求时,可能导致用户响应速度较慢。但您可以尝试针对这一点进行性能提升(比如使用异步的消息收发对组件进行去耦,这样任务就不会在收到响应之前一直阻塞)。适用这类应用程序的性能提升手段有好几种,您有时间可以好好地研究一下它们。
返回列表