本系列的 第 1 部分 展示了如何使用命令行工具将一个 Tomcat 应用程序及其 SQL 数据库迁移到云。在本部分(第 2
部分)中,我们迁移同一个应用程序,但所有工作都在 Eclipse 中完成。我们将介绍设置
Eclipse,以便您可在源代码上运行更详细的迁移分析(包括专门针对 Tomcat 迁移的分析)。然后,我们将该应用程序部署到 Bluemix
并进行测试,所有操作都从 Eclipse 中执行。该流程的主要任务流是将一个 Tomcat 应用程序迁移到 Bluemix 上的 Liberty
for Java。但是,如果应用程序已在 Eclipse 中的 Liberty 概要文件上运行,那么操作很简单,因为所有从 Eclipse 到
Bluemix 的步骤都基本相同。
本系列的第 3 部分介绍 Java
主要应用程序的迁移。在后面的文章中,我们将讨论一个将数据库保留在内部的场景,将分析在将应用程序迁移到云时可能需要执行的更改,比如集群中的会话持久性。
“这是一个教程系列的第 2 部分,将展示如何使用 Eclipse 将 Tomcat 应用程序迁移到 IBM
Bluemix。”
第 1 步. 将一个本地 Tomcat 服务器安装到 Eclipse 中
注意:如果您的应用程序已在 Eclipse 中的 WebSphere Liberty 上运行,可跳过第 1 步和第 2
步,直接执行第 3 步。
我们首先让示例应用程序在 Eclipse 本地运行。尽管从技术上讲,将应用程序从 Eclipse 部署到 Bluemix
不是必须执行这一步,但分阶段方法有助于逐步消除问题,使最终操作变得更简单。
- 从 Apache Tomcat 网站下载 Apache
Tomcat。按照 Eclipse 文档 “创建 Tomcat 服务器 中 “前提条件” 下的说明执行下载和提取。
- 在 Eclipse 中设置 Apache Tomcat 服务器。按照 Eclipse 文档 添加 Apache Tomcat 运行时 的说明操作。
- 现在,返回到 创建 Tomcat 服务器 页面,按照 “创建 Apache Tomcat 服务器” 下的说明操作。
完成前面的步骤后,您应有一个本地 Apache Tomcat 服务器来运行该应用程序。下一节将导入示例应用程序。
第 2 步. 在 Eclipse 中导入并运行您的应用程序
第 2 部分使用与 第 1 部分 相同的 RedbookLibrary 示例 Tomcat
应用程序。我们推荐使用此应用程序来熟悉这些工具。然后,您可对自己的应用程序执行这些同样的步骤。
- 示例 Tomcat 应用程序代码 RedbookLibrary 以 GitHub 存储库
的形式提供。
- 打开 Eclipse,从 Git 选择 Git > Projects 将项目导入到
Eclipse。单击 Next。
- 选择 Clone URI 并单击 Next。使用
https://github.com/kgb1001001/RedbookLibrary
作为 URI 并单击
Next。 - 单击 Import existing Eclipse projects。单击
Next 和 Finish。该应用程序现在已在 Project
Explorer 中。
- 您将注意到标记了许多 Java 错误。这些错误不适用于在 Tomcat 上运行应用程序。要删除错误标记,可右键单击
RedbookLibrary project >
Properties > Targeted
runtimes。选择 Apache Tomcat v7.0,然后单击
Apply 和 OK。这些错误应该已没有标记。
- 现在您已准备好在 Eclipse 中运行您的应用程序。右键单击 RedbookLibrary 应用程序。选择 Run
As > Run on Server >
Tomcat v7.0 Server at localhost。
- 运行的应用程序应在 http://localhost:8080/RedbookLibrary 上运行的 Eclipse 控制台中打开。
- 如果喜欢,可按照 第 1 部分 中第 7 步的说明操作,确保应用程序在本地正常运行。在部署到 Bluemix
之前这一步不是必须执行的,但能看到它正常运行也很不错。
现在,让我们安装并运行迁移分析工具,帮助确定如何轻松地将应用程序移植到 Bluemix 中。首先,我们将迁移工具安装到 Eclipse 中。然后,针对
Bluemix 中的 Liberty for Java
运行时所支持的功能,对该应用程序执行分析。我们还会通过分析获取外部依赖关系和云架构考虑因素的信息。
- 使用 Eclipse,选择 Help > Eclipse
Marketplace,然后搜索 "IBM WebSphere Application Server
Competitive Migration Toolkit, Competitive Tools 8.5.5"。单击
Install。选择 Apache Tomcat to Liberty
Profile Configuration Migration Tool。依次单击
Confirm、Accept License 和
Finish。重新启动 Eclipse。
- 在 Bluemix 中,启动针对 Liberty for Java 运行时应用程序的分析。右键单击
RedbookLibrary 项目 并选择 Software
Analyzer > Software Analyzer
Configurations。
- 单击 Software Analyzer。选择左上角的 New Configuration
图标并提供一个名称。
- 对于 Scope,选择 Analyze,选择 RedbookLibrary 项目,然后单击
Apply。
- 单击 Rules。在 Rule Sets 下,选择 Apache Tomcat
Application Migration。
- 单击 Set 并选择 Liberty for Java on IBM
Bluemix 作为目标应用服务器。单击 Analyze。
点击查看大图
分析结果显示在各个选项卡中。我们的示例应用程序的有趣结果显示在 XML File Review 和 Java Code Review 下。
- 单击 XML File Review。您将看到两个 context.xml 条目。这两个条目与
Liberty Profile 和 Tomcat 处理配置的方式不同有关。考虑到我们将使用 manifest.yml 文件、SQL
Database(不是 Derby)和 Bluemix Liberty 概要文件的自动配置功能的方式(参阅 第 1 部分 了解详细信息),这些内容不需要更改。但是,Use Java EE deployment
descriptors 有一个自动快速修复灯泡按钮,所以我们可右键单击第二个条目并选择 Quick
Fix。这个快速修复程序将 Tomcat 的 context.xml 文件中的资源绑定定义引入到
WebSphere Liberty 的 ibm-web-bnd-ext.xml
文件中。第一个上下文值组件消息没有快速修复程序。打开源代码,可以看到它与 Derby 相关。因为我们未在 Bluemix 部署中使用 Derby,所以可以忽略这一项。
- 单击 Java Code Review 并打开这些选项卡。在这里,您将注意到 Cloud
migration 下标记了 3 个区域(在 第 1 部分 中看到了相同的 3 个区域):
- Capture log information
- HTTP session persistence
- Use SQL Database service
这些区域是与将应用程序迁移到云相关的检查,我们需要特别关注这一部分。与 第 1 部分 中所做的一样,我们遵循在 Bluemix 上的 Liberty for Java 下使用 SQL
Database 服务的建议。Capture log information 警告对我们的实现没有影响(已在第 1
部分中讨论过),而且只有在本系列后面的一部分中添加集群时才需要解决 HTTP session persistence 警告。 - RedbookLibrary 应用程序非常干净,很容易从 Tomcat 迁移到 Liberty
概要文件。如果您的应用程序标记了大量规则,您可能希望考虑在 Eclipse 中设置一个本地 Liberty
服务器,采用两阶段迁移方法。在第一步中,从 Eclipse 中的 Tomcat 迁移到 Eclipse 中的 Liberty。然后,从
Eclipse 中的 Liberty 迁移到 Bluemix 中的 Liberty for Java,这是需要针对云而执行的更改集。可在
WebSphere Application Server v8.5 迁移指南 中找到从不同的应用服务器迁移到
Liberty 概要文件的更多细节。
第
5 步:在 Bluemix 中创建 SQL Database 服务
我们使用 IBM Bluemix 中的 SQL Database 服务来存储我们的数据。该服务需要在您部署应用程序之前在 Bluemix
中创建,以便应用程序在部署时绑定到该服务。我们利用 Bluemix Liberty for Java 运行时的自动配置功能,如 第 1 部分 所述。可通过命令行创建 SQL Database 服务(按照第 1 部分中的说明操作),或者使用 Bluemix
用户界面,如下所示。
- 登录到 Bluemix。
- 选择 Catalog。
- 在 Database and Analytics 下,选择 SQL Database。
- 对于 Service Name,输入
library_db
。 - 其他字段保留默认设置。单击 Use。
使用 Eclipse 将应用程序部署到 Bluemix 与部署到 Tomcat 本地几乎相同。首先需要执行一些一次性设置,然后您的 Bluemix
帐户看起来就像任何其他可用于部署和运行应用程序的服务器一样。
- 通过 Eclipse Marketplace 将 Bluemix 工具安装到 Eclipse 中。单击
Help > Eclipse Marketplace。找到
IBM Eclipse Tools for Bluemix 并单击 Install。单击
Confirm。接受许可并单击 Finish。重新启动
Eclipse。
- 现在可以创建一个 Bluemix 服务器。在 Servers 选项卡中,右键单击并选择 New
>Server,然后选择 IBM >
IBM Bluemix。单击 Next。
- 输入您的帐户信息并单击 Validate Account。单击
Next。
- 在 Add and Remove 上,添加 RedbookLibrary 并单击
Finish。IBM Bluemix 现在应显示在 Server
选项卡上。
- 要在 Eclipse 中设置新的目标服务器,可返回到 RedbookLibrary。右键单击并选择
Properties > Target
Runtimes。另外,选择 IBM Bluemix。
- 选择您的 RedbookLibrary 应用程序,右键单击,然后选择 Run As >
Run On Server。
- 在 Cloud 下,选择 IBM Bluemix,然后单击 Finish。
- Application Details 向导应该会打开。它将从 manifest.yml 文件读取信息。可保留第一页上的默认设置,单击
Next。
- 在 Launch deployment 上,为 Subdomain 提供一个唯一的名称(此名称将是您在 Bluemix
上的应用程序的主机名),然后单击 Next。
- 在 Services selection 上,一定要单击 library_db 来绑定 SQL
Database 服务,然后单击 Finish。这将启动向 Bluemix 的部署。
您的应用程序已部署到 Bluemix,并可在 Eclipse 中访问主页。
按照 第 1 部分 中第 7 步 “测试您的应用程序” 的说明操作。
如 第 1 部分 所述,因为 Bluemix 会按小时收费,所以您希望在完成后停止或删除您的应用程序。可通过(第 1
部分中介绍的)命令行、通过 Bluemix UI 或直接从 Eclipse(我们将在这里介绍)完成此任务。
- 在 Eclipse 中的 Servers 选项卡中,在 IBM Bluemix 下找到您的 RedbookLibrary
应用程序。它应该显示
Deployed, Started, Synchronized
。 - 要停止该应用程序,可右键单击并选择 Stop。这会将该应用程序保留在 Bluemix
上,但停止运行它,所以您不会累积 Java 运行时费用。但是,您的数据库服务仍在运行。在本例中,我们选择 Free Tier for
SQLDB,所以这不应该累积费用。
- 要删除该应用程序,可右键单击并选择 Remove。这一步会从 Bluemix
完全删除该应用程序(当然,再次需要它时,可以轻松地从 Eclipse 重新部署它)。也可在删除过程中删除 library_db
服务。
在这一部分中,我们介绍了如何使用 Eclipse 工具分析一个 Tomcat 应用程序,并将其迁移到 Bluemix 中的 Liberty for
Java 运行时。后续文章将介绍如何迁移 Java
主要应用程序,如何连接到外部、内部部署的数据库,以及如何针对集群扩展和会话持久性而设置此应用程序。
BLUEMIX SERVICE USED IN THIS TUTORIAL:Liberty for Java 运行时 帮助您轻松地开发、部署和扩展 Java Web 应用程序。
相关主题:EclipseApache Tomcat