转载

使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

在本教程系列的前 3 个部分中,学习了如何将 Java™ Web 应用程序和独立 Java 应用程序迁移到 IBM® Bluemix®。在第 4 期中,将介绍如何将一个在 Bluemix 中运行的 Java Platform, Enterprise Edition 应用程序与一个在 Bluemix 外运行的关系数据库相连接。通常,将会使用该架构将托管在云中的企业应用程序连接到托管在私有数据中心中( 内部部署 )的企业记录数据库。您的 Java 应用程序可实现云计算的操作效率,并且数据库仍保留在数据中心中,以便其他应用程序可以在本地访问它。

本教程的练习是构建一个将现有 Bluemix 应用程序连接到模拟的内部部署数据库的简单解决方案:

使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

将 Secure Gateway 安装在 Bluemix 和一个在 Bluemix 托管的虚拟机中运行的模拟企业数据中心中。然后配置该网关,将示例 Java 应用程序连接到在模拟的数据中心内运行的 MySQL 数据库。该 Java 应用程序提供了一个 UI 来处理数据库中的数据,它将在 Bluemix 中的 Liberty for Java 运行时中运行。

我们将重点介绍如何配置和使用 Secure Gateway,而不是介绍应用程序或数据库的复杂性。

需要做的准备工作

  • 一个 IBM ID 和一个 Bluemix 帐户(注册您的免费试用版帐户,如果您已经有一个帐户,请登录到 Bluemix)。
  • Cloud Foundry 命令行工具 :将示例应用程序部署到 Bluemix。
  • 一个 Eclipse 开发环境:加载示例应用程序的源代码并编辑服务器配置。
  • Liberty:在本地测试示例应用程序并打包该服务器,以便将它部署到 Bluemix。
  • (仅适用于 Microsoft® Windows ® 用户)PuTTYgen 和 Git Bash:生成一个密钥对,并通过 ssh 连接到托管在 Bluemix 中的虚拟机。

请安装此列表中的所有工具,然后再继续执行教程中的步骤。

您的 Java 应用程序可实现云计算的操作效率,并且数据库仍保留在数据中心中,以便其他应用程序可以在本地访问它。

第 1 步. 设置环境

在这一步中,您将设置示例应用程序和数据库,并将该应用程序部署在本地来测试它。对于 Java 应用程序,您将使用一个包含在 Bluemix Java DB Web Starter 样板 中的现有应用程序。您将在 Bluemix 中创建一个虚拟机 (VM) 来模拟私有数据中心,将 Docker 容器管理器安装在该 VM 中,然后将一个 MySQL 实例(使用该 Java 应用程序需要的数据库(包括示例数据)来初始化)安装在该 VM 中。然后,您将示例应用程序代码导入 Eclipse 中,并将 Eclipse 项目部署到本地 Liberty 服务器。

在 Bluemix 中创建一个新空间

登录到 Bluemix 并单击右上角的 Account and Support 按钮:

使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

您的所有 Bluemix 工件(一个虚拟机、一个 Java for Liberty 运行时和两个服务实例)都是在 hybrid-cloud 空间中创建的。在完成本教程并希望将这些工件的资源用于其他用途时,可以删除该空间。

将您的活动地区更改为 United Kingdom 地区。(默认的 Bluemix 地区是 US South 地区,但 IBM Virtual Machines beta 环境只能用于 UK 地区。)创建一个名为 hybrid-cloud 的新空间。

创建该虚拟机

阅读: 从 Bluemix 仪表板创建一个 SSH 安全密钥

阅读: 在公共云中创建一个 VM

备注:这些指令将使用 UNIX®/Linux® 命令。在 Windows 中,可使用 Git Bash 运行 Linux 命令,或者使用 PuTTYgen 生成 SSH1 (RSA) 密钥,并使用 PuTTY 通过 SSH 连接到 VM。本教程将介绍 Bash 命令。

  1. 在一个终端窗口或工具中,运行以下命令来创建一个名为 todo

    的 SSH 密钥对(私钥文件:todo.key;公钥文件:todo.key.pub):

    ssh-keygen -t rsa -f todo.key

  2. 在 Bluemix 仪表板中,选择 RUN VIRTUAL MACHINES
  3. 在 Create a Virtual Machine 页面的 Image Settings 中,选择 Debian 8.0 镜像。
  4. 输入以下镜像和 VM 设置(对任何有默认值的设置使用默认值):
    属性 是否默认值
    Location IBM Cloud Public 默认值
    Select image (从 Existing 列表选择):Debian 8.0 默认值
    Name your_initials _To_Do
    Type Single 默认值
    Size c1.m4.s20 默认值
    Network private 默认值
    Assign public IP address 选择 (yes)
    Security Key todo
    Security Group allow_all 默认值
  5. 要指定安全密钥,请选择 Add Key 来导入您的 todo 密钥。(在 UNIX 中,运行 cat todo.key.pub 来显示该密钥,以便可以将它复制并粘贴到 Bluemix 中。)
  6. 创建 VM 后,记下它的公共 IP 地址,格式为 129. xxx.xxx.xxx 。(另一个 IP 地址 192.168. xxx.xxx 是私有的。)在后面的命令中,我更喜欢使用公共 IP 地址作为 虚拟机的 IP 地址
  7. 登录到虚拟机。该镜像有一个名为 ibmcloud 的预定义用户(用于远程登录)。要进行登录,可以使用您在创建 VM 时指定的身份验证密钥。在 Linux 中,运行以下命令:

    ssh -i todo.key ibmcloud@<em>虚拟机的 IP 地址</em>

    (在 Windows 中,使用 Git Bash 运行 Linux 命令。)

您现在已有一个正在运行的 Linux VM,您可以登录它。

安装 Docker

稍后您会看到,Secure Gateway 包含一个必须安装在数据中心中的客户端。要安装的最简单的客户端实现是 IBM 打包为 Docker 容器的实现(在 Secure Gateway 中称为 Docker 客户端)。您的 VM 需要安装 Docker 运行时,以便您可以在以后安装这个 Secure Gateway 客户端。(您的 VM 需要运行 Docker 运行时的另一个原因是,这样做它才能运行 MySQL 容器。)

阅读: 安装 Docker Engine

阅读: Secure Gateway 客户端:Docker

  1. 在 Debian 中执行必要的操作,您可能获得以下错误: E:The method driver /usr/lib/apt/methods/https could not be found.N:Is the package apt-transport-https installed? 要修复此问题,可运行 sudo apt-get install apt-transport-https

    像之前一样使用 SSH 登录到您的 VM。按照前面的 “阅读” 链接中的 Docker 安装说明进行操作(包括前提条件)。
  2. 安装 Docker 后,运行:

    sudo docker run hello-world

    如果 hello world 成功运行(在输出中查找 Hello from Docker

    ),那么您的 VM 已安装并正确运行 Docker 运行时。

保持登录到 VM 的状态。

安装并配置 MySQL

要模拟一个企业记录数据库,可以使用包含一个小型的、简单的数据集的 MySQL 数据库。要初始化该数据库,需要一个模式文件和一个数据文件。首先让我们来创建这些文件,然后安装 MySQL。

创建数据库文件

  1. 创建数据库初始化文件的目录表并更改到以下目录:

    mkdir ~/liberty-sql

    cd ~/liberty-sql

  2. 在文本编辑器中,创建 todo-schema.sql 文件并插入以下内容:
    DROP SCHEMA IF EXISTS todo; CREATE SCHEMA todo; USE todo;  CREATE TABLE 'TODOLIST' (     'L_ID' INT(8) DEFAULT NULL,     'C_NAME' VARCHAR(254) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. 创建 todo-data.sql 文件并插入以下内容:
    USE todo;  INSERT INTO 'TODOLIST' ('L_ID','C_NAME') VALUES (1, "sample entry #1"); INSERT INTO 'TODOLIST' ('L_ID','C_NAME') VALUES (2, "sample entry #2"); INSERT INTO 'TODOLIST' ('L_ID','C_NAME') VALUES (3, "sample entry #3");
  4. 运行 ls -l /home/ibmcloud/liberty-sql/ 来确认您已将这些文件放在正确的目录中。您希望输出类似于:
    -rw-r--r-- 1 ibmcloud ibmcloud 227 Jan 1 12:00 todo-data.sql -rw-r--r-- 1 ibmcloud ibmcloud 190 Jan 1 12:00 todo-schema.sql

您现在已拥有在创建 Docker 容器时初始化数据库所需的模式和数据文件。保持登录到 VM 的状态。

安装数据库

  1. 运行以下命令来创建 MySQL 容器实例,并从两个初始化文件加载示例数据:

    sudo docker run -d --name mysql-tutum -p 3306:3306 -v /home/ibmcloud:/home/ibmcloud -e MYSQL_PASS=passw0rd -e STARTUP_SQL=&quot;/home/ibmcloud/liberty-sql/todo-schema.sql /home/ibmcloud/liberty-sql/todo-data.sql&quot; tutum/mysql

    • -d 在后台运行容器,而不是交互式运行。
    • mysql-tutum 是为从镜像创建的容器提供的名称。
    • 3306:3306 转发 MySQL 端口,以便可从主机 SO 的 IP 地址访问它。
    • /home/ibmcloud:/home/ibmcloud 绑定该目录,已在容器中包含的主机 OS 中创建该目录。
    • MYSQL_PASS 设置数据库的主要用户的密码,在本例中为 passw0rd
    • STARTUP_SQL 告诉容器按照通过该空格分隔的列表指定的顺序运行 SQL 文件。
    • tutum/mysql 是将用来创建该容器的 Docker 镜像的名称。
  2. 运行 sudo docker ps 来证明 MySQL 容器正在运行。查找以下类似输出:
    CONTAINER ID        IMAGE          STATUS              NAMES dd1234567890         tutum/mysql    Up 28 seconds    mysql-tutum

您现在已有一个名为 mysql-tutum 的正在运行的 Docker 容器。该容器中运行着一个绑定到端口 3306 的 MySQL 数据库服务器。该数据库服务器包含一个名为 todo 数据库,其中包含一个名为 TODOLIST 的表,该表包含一个 To Do 列表中的一组项目的示例数据。

生成和导入 Java 应用程序,并将它部署在本地

您需要一个连接到 SQL 数据库的 Java 应用程序。无需从头创建该应用程序,可使用通过 Bluemix 中的 Java DB Web Starter 样板创建的一个应用程序实例。

创建应用程序实例

  1. 在 Bluemix 仪表板中,选择您的 hybrid-cloud 空间。
  2. 在 Bluemix 目录的 Boilerplates 部分,选择 Java DB Web Starter
  3. 在该样板的 Create an app 对话框中,将应用程序的名称指定为 your_initials-java-sql (或者不使用您的首字母,而是使用其他 ID 让应用程序的名称唯一)。保留其他设置的默认值并单击 CREATE
  4. 在启动样板的应用程序运行时并载入应用程序后,单击 Your app is running 旁边的链接来运行该应用程序。
  5. 这将打开一个新浏览器选项卡或窗口来显示 Java DB Web Starter 主页: 使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

    使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

    实验在 To Do 列表中添加、更改和删除项目。这些项目存储在 SQL 数据库中。
  6. 返回到 Bluemix 仪表板。向下滚动并单击 Download Starter Code 按钮,将 your_initials -java-sql.zip 下载到您的本地计算机。

将示例应用程序代码导入 Eclipse 中

阅读: Eclipse 文档:导入现有项目

来自 Bluemix 的入门代码被轻松打包为一个 Eclispe 项目。按照前面的 “阅读” 链接中的 Eclipse 文档的指示将该项目导入 Eclipse 中,以便您可以检查示例应用程序的代码。选择 Select archive file 作为导入类型,然后浏览到并选择您下载到本地系统的入门代码 .zip 文件。

该导入会在 Eclipse 中创建 JavaDBApp 项目。

将示例应用程序部署到 Liberty 服务器

除了使用 Eclipse 编辑应用程序代码之外,还可以使用它将示例应用程序部署到您的 Liberty 服务器并运行该应用程序。

阅读: Eclipse 文档:将项目添加到服务器

按照前面的 “阅读” 链接中的 Eclipse 文档操作,使用 JavaDBApp 作为要添加的项目,使用 wlp-8.5.5.8 defaultServer at localhost 作为用来添加它的服务器。

Servers 视图现在显示了与该服务器有关联的项目。

阅读: Eclipse 文档:Servers 视图

此刻,您可以启动该服务器并启动其中的应用程序,然后打开该应用程序的 GUI 来测试它。但这么做还没有太多意义,因为该应用程序未连接到数据库;您会看到 “Error” 而不是 To Do 列表。

第 2 步. 直接连接到数据库

在这一步中,将设置一个本地 Liberty 服务器来连接到 MySQL,并通过该连接测试该应用程序。

添加 MySQL 驱动程序 JAR

  1. 转到 MySQL Download Connector/J 页面。下载并保存独立于平台的驱动程序(而 不是 Microsoft Windows 驱动程序)的最新版本的存档文件(截至编写本文时,最新版本为 v5.1.38)。
  2. 展开下载的存档文件并获得 .jar 文件 (mysql-connector-java-5.1.38-bin.jar)。
  3. 在 Liberty 服务器的目录结构中,将 mysql-connector-java-5.1.35-bin.jar 添加到 wlp/usr/servers/defaultServer/lib 目录(如果该目录不存在,请创建它)。

针对 MySQL 配置服务器

现在,在 Eclipse 中,修改 Liberty 服务器的服务器配置(WebSphere Application Server Liberty 配置文件),以添加 MySQL 数据库的数据来源和设置应用程序的上下文根:

  1. 在 Eclipse 中,检查需要数据来源的应用程序依赖项。导航到您的项目 JavaDBApp。在该项目中,Java Resources 文件夹包含应用程序源代码。打开 persistence.xml 文件(它通常位于路径 src/main/resources/META-INF/ 或 src/META-INF/ 中)。请注意定义 JTA 数据来源的行:
    <jta-data-source>java:comp/env/jdbc/mydbdatasource</jta-data-source>
    这一行将应用程序的持久性单元 openjpa-todo 绑定到一个数据来源,该来源的 Java 命名和目录接口 (JNDI) 名为 jdbc/mydbdatasource。因此,服务器需要定义一个在 JNDI 中注册为 jdbc/mydbdatasource 的数据来源。
  2. 在 Eclispe 中的 Servers 视图中,打开与该服务器有关联的 Server Configuration [server.xml] 文件。
  3. 在 Server Configuration 视图中,使用 Designer 、选项卡或 Source 选项卡添加该数据来源和共享库(请注意,该库的 <fileset> 被配置为查找 MySQL 驱动程序 JAR):
    <dataSource jndiName="jdbc/mydbdatasource">     <jdbcDriver libraryRef="mysql-connector"/>     <properties URL="jdbc:mysql://hostname:port/todo?relaxAutoCommit=true" user="user"          password="password"/> </dataSource> <library id="mysql-connector" name="MySQL Connector" description="MySQL JDBC Driver">     <fileset id="mysql-connector-jar" dir="${server.config.dir}/lib"          includes="mysql-connector-java-*.jar"/> </library>
    URL 属性的值中,替换以下变量:
    • hostname (托管 MySQL 数据库的 VM 的 IP 地址): 虚拟机的 IP 地址
    • port (您创建 MySQL 容器时设置的端口): 3306
    • user (MySQL 容器中的默认用户): admin
    • password (您创建 MySQL 容器时设置的密码): passw0rd
  4. 要使得该应用程序可通过根目录(而不是子目录,比如 liberty-IRDS)进行访问,可添加以下 Web 应用程序配置:
    <webApplication id="liberty-IRDS" name="liberty-IRDS" location="liberty-IRDS.war" context-root="/"/>

正如 Console 视图中所解释的,访问该应用程序的 URL 是 http://localhost:9080/。该服务器现在已配置了一个用于访问该数据库的数据来源,而且设置了应用程序的上下文根。

使用直接连接测试该应用程序

现在运行该应用程序,确认它已正确连接到 MySQL。在 Eclipse 中:

  1. 在 Servers 视图中,确认服务器和应用程序已启动并同步。如果未启动它们,则启动服务器并确认应用程序已启动。您想要看到已启动和同步的项是 wlp-8.5.5.8 defaultServer at localhostJavaDBApp(liberty-IRDS)
  2. 在 Eclipse 或外部 Web 浏览器中,访问 http://localhost:9080/ 来打开应用程序的 Web GUI。这将打开应用程序的 Java DB Web Starter 网页。在访问该数据库期间,将会在显示 To Do 列表的区域显示 “Please wait while the database is being initialized ...”。如果应用程序成功连接到数据库,则会填入 To Do 列表。默认项是示例条目 #1、#2 和 #3。(如果应用程序无法连接并成功加载数据,To Do 区域会显示 “Error”)。

该应用程序现在正在本地运行,并使用虚拟机中的 MySQL 数据库。

第 3 步. 通过 Secure Gateway 建立连接

在这一步中,将配置一个 Secure Gateway 来连接到 MySQL 数据库,并配置该应用程序来使用该网关。

阅读: Secure Gateway 入门

配置一个网关和目标

在 Secure Gateway 服务中创建一个实例,然后使用它在该网关中配置一个网关和一个目标 — 在虚拟机中运行的 MySQL 数据库。

在 Bluemix 仪表板中:

  1. 选择您的 hybrid-cloud 空间。
  2. 在空间的主视图中,选择 USE SERVICES OR APIS
  3. 在服务目录中,选择 Secure Gateway
  4. 在 Secure Gateway 的创建页面中,保留默认设置并单击 CREATE
  5. 在 Secure Gateway 页面中,单击 ADD GATEWAY
  6. 在 Add Gateway 页面中,将名称设置为 My Data Center 。清除这些选项,以便使用令牌: 使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分
  7. 选择 ADD DESTINATIONS
  8. 在 Add Destinations 页面中,添加一个包含下表中所示的设置的目标(填入这些值,然后单击右侧的加号 +):
    属性
    Destination name To Do Database
    Hostname or IP address 虚拟机的 IP 地址
    Port 3306
    Transport TCP
    现在,列出了一个名为 To Do Database 的目标: 使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

    使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

  9. 可选:单击目标信息按钮(它类似于一个包含字母 i 的圆圈)来显示目标的配置:
    属性
    Name To Do Database
    Destination ID aaaA0AAAA00_vfY
    Cloud Host :Port cap-sg-prd-1.integration.ibmcloud.com:15000
    Destination Host :Port <虚拟机的 IP 地址> :3306
    Created by John Doe at 7/1/2015, 12:05:00 PM
    Last modified by John Doe at 7/1/2015, 12:05:01 PM
    网关是将云主机和端口映射到目标主机和端口的代理。目标的主机和端口是您在创建目标时指定的值。目标是网关将要连接到的目标,即 MySQL 数据库。云主机和端口是应用程序将用于远程访问目标的云主机和端口。

您已配置了一个用于访问该数据库的网关和目标。

设置网关客户端

网关需要一个部署在托管数据库的数据中心中的客户端。网关客户端需要具有访问数据中心中运行的数据库以及在 Bluemix 中运行的网关的网络访问能力。通常,网关客户端安装在连接到与数据库主机相同的网段(子网或 VLAN)的主机,而且该网段被连接到互联网(或与 Bluemix 的另一个网络连接)。

网关客户端可在主机本地、在 Docker 容器中或在 IBM DataPower® 中运行。您使用 Docker 容器并将它部署到模拟数据中心的 VM,该 VM 安装了 Docker 运行时。

阅读: Secure Gateway 客户端:Docker

安装和运行网关客户端

首先,获得网关客户端的 Docker 连接命令。在 Bluemix 仪表板中:

  1. 导航到您空间的 Secure Gateway 服务实例的 Secure Gateway 仪表板。
  2. 单击 My Data Center 标签转到 Gateway 页面。
  3. 在 Gateway 页面中,可以注意到此处列出了一个目标:To Do Database。选择 Connect Gateway 。该页显示了 How would you like to connect this new gateway? 和 3 个选项:IBM Installer、Docker 和 IBM DataPower: 使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

    使用 Bluemix 将 Java 应用程序迁移到混合云,第 4 部分

  4. 选择 Docker 图标来显示安装和运行网关的 Docker 客户端的命令:

    docker run -it ibmcom/secure-gateway-client <em>gateway ID</em>

    网关的 ID 告诉 Bluemix,客户端需要连接到哪个网关。记下这个 Docker 命令,稍后需要使用它。

其次,在 VM 中安装并运行网关客户端:

ssh -i todo.key ibmcloud@虚拟机的 IP 地址 sudo docker run hello-world sudo docker run -it ibmcom/secure-gateway-client 网关 ID 

网关客户端现在正在运行并显示它已连接,而且 Gateway 页面显示该网关已连接。用于运行客户端的 shell 现在被附加到容器上并运行网关客户端的 shell,后者会在建立连接和断开连接时显示。

配置网关客户端

网关客户端配置了一个访问控制列表 (ACL),用于指定允许和拒绝哪些主机名-端口组合。默认情况下,在新创建的网关客户端中,ACL 是空的,所以所有主机名-端口组合都会被阻止。这是一项安全功能:即使 Bluemix 中的网关的管理员决定开始访问某个新目标,该访问也会被阻止,除非该网关客户端的管理员将该目标的主机名-端口组合添加到客户端的 ACL 中。

配置网关客户端的 ACL,以便允许网关连接到目标:

  1. 当您启动网关客户端的 Docker 容器时,会将命令行附加到客户端的 shell。可以按下回车键获得客户端 CLI 的提示符。
  2. 显示当前 ACL 配置,其中显示了所有受阻的端口:
    cli> show acl [2016-01-01 12:00:00.000] [INFO] (Client PID 1) There are no Access Control  List entries, the ACL Deny All flag is set to: true
  3. 将目标的主机名和端口添加到 ACL 中 — 用于配置网关的目标的相同主机名和端口:
    cli> acl allow 159.122.240.100:3306 cli> show acl ------------------------------------------------------------------   -- Secure Gateway Client Access Control List -- hostname                               port      value virtual machine's IP address    3306    Allow ------------------------------------------------------------------

网关客户端中的 ACL 现在已配置为允许网关连接到 虚拟机的 IP 地址:3306 上的目标。

针对 Secure Gateway 配置应用服务器

现在,您的 Secure Gateway 服务实例已配置了一个网关和目标来连接到 MySQL 数据库,您需要修改该应用程序来使用该网关目标。如果检查目标的配置(单击 My Data Center 网关页面上显示为包含 i 的圆圈的信息按钮),就会看到它包含 Cloud Host:Port 的值,在本例中为 cap-sg-prd-1.integration.ibmcloud.com:15000 。这是应用程序用于通过网关目标访问数据库的 URL。

在 Eclipse 中,就像您在 “针对 MySQL 配置服务器” 中所做的一样,修改 Liberty 服务器的服务器配置,以更新数据来源来使用网关目标的 URL:

  1. 在 Servers 视图中,打开与该服务器有关联的 Server Configuration [server.xml] 文件。
  2. 在 Server Configuration 视图中,使用 Designer 选项卡或 Source 选项卡来编辑数据来源中的 URL,这一次使用以下值:
    • hostname (网关目标的云主机): cap-sg-prd-1.integration.ibmcloud.com
    • port (网关目标的云端口) 15000
    • user (未更改): admin
    • password (未更改): passw0rd

从 Console 视图可以看到,Liberty 服务器自动更新了新配置。

使用网关连接测试本地应用程序

在浏览器中访问 http://localhost:9080/ 来运行该应用程序。将打开该应用程序的 Java DB Web Starter 窗口,并将显示 To Do 列表数据。在登录到虚拟机的 shell 中,查看网关客户端的 CLI 中的日志。如果日志显示打开了一个新连接,那么可以确认这个本地应用程序正通过网关连接到数据库。

第 4 步. 部署到 Bluemix

现在本地应用程序在使用网关时已经能够正常工作,您已经准备好将应用程序部署到 Bluemix,并确认它能在这里正常工作。

将服务器和应用程序部署到 Bluemix

要在 Bluemix 上运行应用程序,您需要部署应用程序(它的 JavaDBApp.war 文件)和它的服务器配置(服务器的 server.xml 文件和数据库驱动器 mysql-connector-java-5.1.35-bin.jar)。将服务器和应用程序打包在一起并部署这个包。可以从命令行或使用 Eclipse Tools for Bluemix 执行此过程。在这里,我展示如何通过命令行打包和推送服务器(这将帮助您理解 Eclipse 工具执行的步骤)。

阅读: 从命令行打包 Liberty 服务器

阅读: 管理应用程序:使用 cf 命令部署应用程序

打包和推送

  1. 转到磁盘上安装您的 Liberty 服务器的目录 LIBERTY_ROOT
  2. 如果该服务器正在运行,则停止它:

    wlp/bin/server stop defaultServer

  3. 运行下面的命令来打包该服务器:

    wlp/bin/server package defaultServer --include=usr

  4. 通过 Cloud Foundry CLI 登录到您的 Bluemix 帐户组织和空间:

    cf login -a <em>API_URL</em> -u <em>username</em> -o <em>org</em> -s hybrid-cloud

    API_URL 是 Cloud Foundry 提供程序的 URL,它是 Bluemix(https://api.ng.bluemix.net 表示 US South,https://api.eu-gb.bluemix.net 表示 United Kingdom)。 usernameorg

    通常都是您的电子邮件地址。

  5. 将打包的服务器推送到 Bluemix:

    cf push <em>appname</em> -p wlp/usr/servers/defaultServer/defaultServer.zip

    appname

    是您希望应用程序在 Bluemix 中拥有的名称。该名称必须是唯一的,这样它的路由才会是唯一的。

通常,需要花一两分钟的时间上传该应用程序,并花几分钟时间启动它。在 Cloud Foundry CLI 显示该应用程序已启动和 Bluemix 仪表板显示该应用程序正在运行时,部署就完成了。

检查部署的应用程序

应用程序在 Bluemix 中运行后,检查它来确认您的服务器配置已成功上传。在 Bluemix 仪表板中:

  1. 导航到您的应用程序的页面并选择 Files
  2. 导航并选择 app/wlp/usr/servers/defaultServer/server.xml
  3. 确认 server.xml 文件包含您在 “针对 MySQL 配置服务器” 和 “针对 Secure Gateway 配置应用服务器” 中对服务器配置执行的自定义。具体地讲,确认:
    • 包含一个具有 JNDI 名称 jdbc/mydbdatasource 的数据来源。
    • 该数据来源的 URL 属性包含在 cap-sg-prd-1.integration.ibmcloud.com 部分中。
    • 该数据来源被链接到库 mysql-connector,使用一个文件集来寻找与 mysql-connector-java-*.jar 匹配的值。
    • 该文件引用一个上下文根为根目录的 Web 应用程序。
  4. 导航到 app/wlp/usr/servers/defaultServer/lib。确认此目录包含 MySQL 驱动程序,比如 mysql-connector-java-5.1.35-bin.jar。

现在您已确认不仅应用程序已部署到 Bluemix 上,它的服务器配置也已部署。

在 Bluemix 中测试应用程序

在 Bluemix 中运行该应用程序,并确认它已通过网关正确连接到 MySQL。要运行该应用程序,请在您的浏览器中访问 http:// 应用程序名称 .mybluemix.net。将打开该应用程序的 Java DB Web Starter 窗口,并显示 To Do 列表数据。在登录到虚拟机的 shell 中,查看网关客户端的 CLI 中的日志。如果日志显示打开了一个新连接,那么可以确认这个 Bluemix 应用程序能够通过网关连接到数据库。

结束语

在本教程中,您将一个 Java 应用程序和它的服务器配置部署到了 Bluemix,并使用 Secure Gateway 将该应用程序连接到一个在 VM 中运行的 MySQL 数据库。如果使用运行企业记录数据库的私有数据中心取代 VM,那么可以通过几乎完全相同的方式连接该应用程序和 Secure Gateway。

BLUEMIX SERVICES USED IN THIS TUTORIAL:

  • Secure Gateway 给您的 Bluemix 环境带来了混合集成功能。
  • Liberty for Java 运行时使您能够轻松地开发、部署和扩展 Java Web 应用程序。

相关主题: 第 1 部分 第 2 部分 第 3 部分 Java 开发 MySQL

原文  http://www.ibm.com/developerworks/cn/cloud/library/cl-move-java-app-hybrid-cloud4-bluemix-trs/index.html?ca=drs-
正文到此结束
Loading...