从 Apache Tomcat 迁移到 WebSphere Application Server Liberty Profile

本文提供了将应用程序及其配置信息从 Apache Tomcat 迁移到 IBM® WebSphere® Application Server V8.5.5 Liberty Profile 的说明,使用两个实用程序(其中一个是新的,适用于 V8.5.5)可让迁移变得简单可靠。

Cheryl King, 顾问软件工程师, IBM China

Cheryl King 是一名软件工程师,任职于奥斯汀的 IBM 软件实验室的 WebSphere Application Server Migration 团队。她在 WebSphere Application Server 方面拥有超过 10 年的开发经验,并且最近开发了在 wasdev.net 上提供的 Tomcat Config Migration Tech Preview。



2013 年 8 月 08 日

简介

Apache Tomcat 是一个 HTTP 服务器和 servlet 容器,常用于简单的 Web 应用程序,以及使用不需要完整的 Java™ EE 服务器的框架的应用程序。然而,用户经常会发现,当对 Apache Tomcat 有更多需求时,其最初的简单性就会变得复杂且不实用。

例如,也许 Apache Tomcat 安装的占用空间会变得太大,因为您需要添加第三方库来提供所需的功能。或者,服务器的启动时间也可能是一个问题,因为对 server.xml 文件的任何配置更改都需要重新启动 Apache Tomcat 服务器。又或者,集成和维护第三方库已经变得过于费时。

以上任何一种情况都足以让您考虑将 Apache Tomcat 应用程序及其配置信息迁移到 IBM WebSphere Application Server V8.5.5 Liberty Profile。Liberty Profile 提供一个轻量级且简单易用的应用程序服务器,其占用空间小,并且服务器的启动也很快。它还包括许多 Apache Tomcat 所没有的 Java EE 特性,因而减少了集成和维护第三方库的需求。

利用 Liberty Profile:

  • 用户配置其应用程序所需要的组件,使服务器占用空间较小且服务器启动时间更快。
  • 配置变更不需要重新启动服务器。它们是自动生效的。
  • WebSphere Application Server Developer Tools for Eclipse 使在 Liberty profile 上开发、测试和发布 Web 应用程序变得更容易。
  • 配置通过一个简单的 XML 文件完成。WebSphere Application Server Developer Tools for Eclipse 提供一个直观的用户界面来查看和修改该配置。

信息中心WASdev 社区 中了解有关 WebSphere Application Server V8.5.5 Liberty Profile 的更多信息。

本文提供将应用程序及其配置信息从 Apache Tomcat 迁移到 IBM WebSphere Application Server V8.5.5 Liberty Profile 的说明。

但是,在迁移配置之前,您应该先迁移您的应用程序,以确保与 WebSphere Application Server V8.5 的最佳兼容性和性能。为了协助迁移,在 IBM WebSphere Application Server Migration Toolkit 中提供了 Application Migration Tool - Apache Tomcat to WebSphere,用于扫描应用程序代码,以检测所需的更新,并在可能的情况下提供快速修复。然后,在 WASdev 开发博客中作为一个 Tech Preview 提供的新配置迁移工具 Tomcat Config Migration,可以将服务器和应用程序配置的一个子集迁移到 Liberty Profile。当一起使用时,这些迁移工具提供了一个可靠且简单的方法来从 Apache Tomcat 迁移到 Liberty Profile。

先决条件

本文假定您已经为 Apache Tomcat 配置了一个应用程序,希望将它迁移和发布到 WebSphere Application Server Liberty Profile 上。为了便于说明,本文引用一个在 IBM Redbook 出版物中已经发布的样例应用程序 (IBM Redbooks Publications Sample Application)。有关此应用程序的更多信息,包括下载说明,请参阅 WebSphere Application Server V8.5 Migration Guide 的第 9.4 章。本文的其余部分将它称为样例应用程序。

为了遵循本文中的说明,您将需要下载、正确安装和操作在此处列出的软​​件:


1. 迁移应用程序

第一步是使用 Application Migration Tool – Apache Tomcat to WebSphere 迁移应用程序本身。如果您的应用程序尚未在 Eclipse 工作区中,请按照下列步骤将其导入:

  1. 在 Eclipse 中,选中 File > Import...
  2. 选中 Web > WAR file
  3. 单击 Next
  4. 单击 Browse 导航到 WAR 文件。
  5. 将 Target runtime 设置为 WebSphere Application Server V8.5 Liberty Profile
  6. 单击 Next,然后单击 Finish

现在,您可以配置并运行 Application Migration Tool。遵循 WebSphere Application Server V8.5 Migration Guide 的第 9.4.5 章中的详细说明。

完成应用程序的迁移后,就可以开始迁移配置。


2. 迁移 Apache Tomcat 服务器配置

在 Apache Tomcat 中,某个应用程序所需的特定配置元素位于 server.xmlcontext.xmltomcat-users.xml 文件中,所有文件全都位于 Apache Tomcat conf 目录中。若没有迁移工具,就必须将配置信息手动迁移到 Liberty profile 服务器配置。

当出现以下服务器配置信息时,它们就已成功迁移:

  • Resources 位于 conf/server.xml 和 conf/context.xml 中,适用于 IBM DB2®、Apache Derby、Apache ActiveMQ 和 IBM WebSphere MQ。
  • HTTP connectors 位于 conf/server.xml 中。
  • Session managers 位于 conf/context.xml 中。
  • Users and roles 位于 conf/tomcat-users.xml 中。

若还没有为迁移创建一个 Liberty profile 服务器,则先完成以下步骤:

  1. 在 Eclipse 中,选中 File > New > Other
  2. 选中 Server > Server 并单击 Next
  3. 选择服务器类型:WebSphere Application Server V8.5 Liberty Profile
  4. 设置服务器名称:defaultServer
  5. 单击 Next
  6. 在安装文件夹下,输入安装 Liberty profile 运行时环境的位置。
  7. 单击 Finish

您的工作区现在应该包括 Liberty profile 服务器的一个实例(图 1)。

图 1. Eclipse 工作区中有 Liberty profile 服务器
图 1. Eclipse 工作区中有 Liberty profile 服务器

现在,您可以将 Apache Tomcat 服务器配置迁移到 Liberty profile 服务器:

  1. 选中 Run > Tomcat Configuration Migration...(或者,如果 Apache Tomcat 服务器是在 Eclipse 中定义的,则可以在 Project Explorer 或 Servers 窗格中用鼠标右键单击 Apache Tomcat 服务器,并选中 Migrate Tomcat Configuration...,然后继续执行下面的步骤 j)。
  2. 浏览到 Apache Tomcat 服务器安装的位置。选中文件夹,并单击 OK
  3. 选中要迁移到的 Liberty profile 服务器,并单击 OK
  4. 单击 OK 关闭完成对话框。

结果,Liberty profile 服务器现在包含一个新的 migratedConfig 目录,其中有已迁移的 Apache Tomcat 服务器配置(图 2)。

图 2. 迁移 Apache Tomcat 服务器配置后的 Liberty profile 服务器
图 2. 迁移 Apache Tomcat 服务器配置后的 Liberty profile 服务器

migratedConfig 目录中已迁移文件的结构严格遵循 Apache Tomcat 服务器配置的结构:

  • server.xml 文件包含从 conf/server.xml 文件中迁移的配置子集。
  • context.xml 文件包含从 conf/context.xml 文件中迁移的配置子集。
  • users-and-roles.xml 文件包含从 conf/tomcat-users.xml 文件迁移的用户和角色。

还有一个日志文件 (configMigration.log)、原始 Liberty server.xml 文件 (server.xml.orginal) 的一个副本,以及一个生成的配置文件 (server-updates-for-config.xml),该配置文件中包括 server.xml、context.xml 和 users-and-roles.xml 文件。server-updates-for-config.xml 文件包含在 Liberty server.xml 文件中。这就是将已迁移的配置添加到 Liberty 服务器配置的方法。

让我们来看看作为特定迁移示例的样例应用程序所需的服务器配置。样例应用程序需要一个全局数据源,这个数据源必须在 Apache Tomcat 的 server.xml 中被配置为一个全局命名资源,还需要一个 HTTP 端口,以允许对应用程序的访问(清单 1)。

清单 1. Apache Tomcat server.xml 示例配置
…
<Resource auth="Container" 
      description="Derby database redbook sample" 
      driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      name="jdbc/globalStyleSettings" type="javax.sql.DataSource" 
      url="jdbc:derby:/temp/TomcatDatabases/styles;create=true" 
      username="" password=""/>
…
<Connector port="8080" protocol="HTTP/1.1"
      maxThreads="150"
      socket.soReuseAddress="true"
      connectionTimeout="20000"
      redirectPort="8443"/>
…

迁移如清单 1 所示的服务器配置后,migratedConfig/server.xml 文件中包含一个 httpEndpoint 和 dataSource(清单 2)。

清单 2. 迁移后的 server.xml 配置示例
…
<httpEndpoint host="localhost" 
    httpPort="8080" 
    httpsPort="8443" 
    id="httpConnector-AbT0">
    <httpOptions maxKeepAliveRequests="150" 
        persistTimeout="20s"/>
    <tcpOptions soReuseAddr="true"/>
</httpEndpoint>
…
<dataSource id="globalStyleSettingsDSDerby" 
    jndiName="jdbc/globalStyleSettings">
    <jdbcDriver>
        <library>
            <fileset dir="${shared.resource.dir}" 
                includes="derby.jar"/>
        </library>
    </jdbcDriver>
    <properties.derby.embedded 
        createDatabase="create" 
        databaseName="/temp/TomcatDatabases/styles"/>      
    <connectionManager connectionTimeout="10s" 
        maxPoolSize="100" 
        minPoolSize="30"/>
</dataSource>
…

样例应用程序还需要一个 “test” 用户和 “Test” 角色,这是在 conf 目录下的 tomcat-users.xml 文件中定义的(清单 3)。

清单 3. Apache Tomcat tomcat-users.xml 示例配置
…
<role rolename="Test"/>
<user username="test" password="test" roles="Test"/>
…

迁移如清单 3 所示的服务器配置后,migratedConfig/users-and-roles.xml 文件中包含一个用户和有一个成员的组(清单 4)。

清单 4. 迁移后的 tomcat-users.xml 配置示例
…
<user name="test"
  password="{hash}ATAAAAAIy/2zRjmVAXtAAAAAIF85OBJn2R/DyAPJi8suNDd/PV2liDswtmd2qgfvFQiZ"/>
<group name="Test">
  <member name="test"/>
</group>
…

在下一节中,您将迁移应用程序配置。


3. 迁移应用程序配置

某个应用程序所需要的特定配置数据可能位于该应用程序的 META-INF/context.xml 或 WEB-INF/web.xml 文件中。若没有迁移工具,该配置就必须被手动迁移到 Liberty profile 服务器配置。

当出现以下配置信息时,它们已成功迁移:

  • Resources 位于 META-INF/context.xml 中,适用于 IBM DB2、Apache Derby、Apache ActiveMQ 和 IBM WebSphere MQ。
  • Application security constraints 位于 WEB-INF/web.xml 中.

如果应用程序依赖于任何 IBM DB2 或 Apache Derby 资源,那么就必须首先将相关的数据库 JAR 文件从 Apache Tomcat 安装复制到 Liberty profile 安装的 ${shared.resources.dir}

  1. derby.jar 从 Apache Tomcat 安装的 lib 目录复制到 Liberty profile 安装的 usr/shared/resources 目录。
  2. db2jcc4.jardb2jcc_license_cu.jar 从 Apache Tomcat 安装的 lib 目录复制到 Liberty profile 安装的 usr/shared/resources 目录。

若使用样例应用程序,则需要 Apache Derby 数据库。因此,需要复制 derby.jar 文件,如上所述(步骤 a)。如果目前在 Apache Tomcat 安装的 lib 目录中没有一个 derby.jar 副本,则可以 下载所需的 Apache Derby 文件。(例如,针对 V10.8.2.2 要下载的特定文件是 "db-derby-10.8.2.2-bin.zip"。)

图 3. 在 Liberty profile 安装中的数据库资源的位置
图 3. 在 Liberty profile 安装中的数据库资源的位置

现在,您可以迁移应用程序配置:

  1. 右键单击您的应用程序的项目,并选中 Migrate Tomcat Configuration...
  2. 选中要迁移到的 Liberty profile 服务器,并单击 OK
  3. 单击 OK 关闭完成对话框。

现在,Liberty profile 服务器包含一个新的子目录,其名称为 migratedConfig 目录下的应用程序名称。对于样例应用程序,新创建的 RedbookLibrary 目录包​​含已迁移的应用程序配置(图 4)。

图 4. 迁移应用程序配置后的 Liberty profile 服务器
图 4. 迁移应用程序配置后的 Liberty profile 服务器

RedbookLibrary 目录内已迁移的文件紧密映射到应用程序的相应文件:

  • application-config-context.xml 文件包含从 META-INF/context.xml 文件中迁移的配置子集。
  • application-config-web.xml 文件包含从 WEB-INF/web.xml 文件中迁移的配置子集。

还有一个日志文件 (configMigration.log)、原始 Liberty server.xml 文件 (server.xml.orginal) 的一个副本,以及一个生成的配置文件 (server-updates-for-application.xml),该配置文件中包括 application-config-context.xml 和 application-config-web.xml 文件。server-updates-for-application.xml 文件包含在 Liberty server.xml 文件中。这就是将已迁移的配置添加到 Liberty 服务器配置的方法。

让我们来看看样例应用程序所需的应用程序配置。样例应用程序需要在 META-INF/context.xml 文件(清单 5)中进行配置的两个本地数据源,还需要在 WEB-INF/web.xml 文件(清单 6)中的一个安全角色和安全约束。

清单 5. META-INF/context.xml 中的配置示例
…
<Resource auth="Container" 
      description="Derby database Demo Tomcat Book App"
      driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
      maxActive="100" maxIdle="30" maxWait="10000"
      name="DefaultDatasource" type="javax.sql.DataSource"
      url="jdbc:derby:/temp/TomcatDatabases/books;create=true"
      username="" password="" />

<Resource auth="Container" 
      description="Derby database for members" 
      driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      name="jdbc/Members" type="javax.sql.DataSource" 
      url="jdbc:derby:/temp/TomcatDatabases/members;create=true" 
      username="" password=""/>
…
清单 6. WEB-INF/web.xml 中的配置示例
…
<security-constraint>
      <web-resource-collection>
            <web-resource-name>TestRole</web-resource-name>
                  <url-pattern>/test/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                  <role-name>Test</role-name>
            </auth-constraint>
</security-constraint>
…
<security-role>
      <role-name>Test</role-name>
</security-role>
…

迁移如清单 5 所示的应用程序配置后,migratedConfig/RedbookLibrary 目录中包含一个 application-config-context.xml 文件,其中配置了两个 dataSources(清单 7)。

清单 7. 从 context.xml 迁移的应用程序配置示例
…
<dataSource id="DefaultDatasourceRedbookLibraryDSDerby"
    jndiName="DefaultDatasource">
    <jdbcDriver>
        <library>
            <fileset dir="${shared.resource.dir}" 
                includes="derby.jar"/>
        </library>
    </jdbcDriver>
    <properties.derby.embedded createDatabase="create"
        databaseName="/temp/TomcatDatabases/books"/>
    <connectionManager minPoolSize="30" 
        connectionTimeout="10s"
        maxPoolSize="100"/>
</dataSource>
<dataSource id="MembersRedbookLibraryDSDerby" 
    jndiName="jdbc/Members">
    <jdbcDriver>
        <library>
            <fileset dir="${shared.resource.dir}" 
                includes="derby.jar"/>
        </library>
    </jdbcDriver>
    <properties.derby.embedded createDatabase="create"
        databaseName="/temp/TomcatDatabases/members"/>
    <connectionManager minPoolSize="30" 
        connectionTimeout="10s"
        maxPoolSize="100"/>
</dataSource>
…

迁移如清单 6 所示的应用程序配置后,migratedConfig/RedbookLibrary 目录中包含一个 application-config-web.xml 文件,其中配置了一个应用程序和安全角色(清单 8)。

清单 8. 从 web.xml 迁移的应用程序配置示例
…
<application id="RedbookLibrary" 
    location="RedbookLibrary.war"
    name="RedbookLibrary" 
    type="war">
    <application-bnd>
        <security-role name="Test">
            <user name="test"/>
        </security-role>
    </application-bnd>
</application>
…

要确定将哪些用户添加到应用程序上的 “Test” 安全角色,需要对在 migratedConfig 目录中的 users-and-roles.xml 文件进行检查,以确定哪些用户是 “Test” 组的成员。这一技巧使该配置可以被自动生成为迁移的一部分,而不必手动发布应用程序并在之后配置安全角色。

对于样例应用程序,针对服务器配置和应用程序配置使用迁移工具,这就不需要执行在 WebSphere Application Server V8.5 Migration Guide 第 9.4.6 章和第 9.4.7 章中所记载的手动步骤。

接下来,您将在 Liberty profile 服务器上运行迁移的应用程序。


4. 在 Liberty profile 上运行应用程序

作为应用程序配置迁移的结果,应用程序现已被发布到 Liberty profile 服务器上。只需启动服务器并访问应用程序:

  1. 在 Eclipse 中,右键单击 Liberty profile 服务器,并选中 Start
  2. 在 Console 窗格中单击应用程序 URL,或在您的首选 Web 浏览器中输入应用程序 URL。对于样例应用程序,URL 是 http://localhost:8080/RedbookLibrary/
图 5. 在 Console 窗格中单击应用程序 URL,以在 Eclipse 中运行应用程序
图 5. 在 Console 窗格中单击应用程序 URL,以在 Eclipse 中运行应用程序

要测试样例应用程序:

  1. 单击 Build The Databases
  2. 当提示输入用户名和密码时,均输入 test
  3. 返回主页面并单击 Populate the Database with test data
  4. 返回主页面并登录,User ID 为 user1 ,Password 为 password1

请注意,以上步骤 d 中利用了迁移的用户和角色,以及迁移的应用程序安全约束,这就要求作为 “Test” 角色成员的用户进行登录,以创建测试数据。

有关在 Liberty profile 服务器中测试样例应用程序的更多信息,请参阅 WebSphere Application Server V8.5 Migration Guide 的第 9.4.8 章。


结束语

本文介绍了如何使用 Application Migration Tool – Apache Tomcat to WebSphere(用于应用程序迁移)和 Tomcat Config Migration Tech Preview (用于配置迁移),将一个应用程序及其配置从 Apache Tomcat 迁移到 WebSphere Application Server Liberty Profile。使用这些实用程序,可让迁移到 Liberty profile 服务器比以往任何时候都更容易且更可靠,从而简化流程。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=940256
ArticleTitle=从 Apache Tomcat 迁移到 WebSphere Application Server Liberty Profile
publish-date=08082013