Apache TomcatからWebSphere Application Server Libertyプロファイルへのマイグレーション

この記事では、マイグレーションを容易で信頼性の高いものとする 2 つのユーティリティ (そのうちの 1 つは V8.5.5 の新機能) を使用して、Apache Tomcat から IBM WebSphere Application Server V8.5.5 Liberty プロファイルにアプリケーションと構成をマイグレーションするための手順を説明します。

Cheryl King, Advisory Software Engineer, IBM

Cheryl King はアメリカ・オースティンにあるIBMソフトウェア研究所の、WebSphere Application Server Migration チームで働くソフトウェア・エンジニアです。彼女は、WebSphere Application Serverに関して10年以上の開発経験があり、最近では、wasdev.netで提供中の Tomcat 構成移行ツールのテクニカル・プレビューの開発を行いました。



2014年 4月 03日

概要

Apache Tomcat は、シンプルな Web アプリケーション、および、フルの Java EE サーバーを必要としないフレームワークを使用するアプリケーションでよく使用される、HTTP サーバーおよびサーブレット・コンテナーです。しかし、ユーザーは多くの場合、Apache Tomcat に対する要求が増えるに従って、その当初のシンプルさが失われ、複雑で非実用的になっていくことに気付きます。

たとえば、必要な機能を得るためにサード・パーティ製のライブラリーを追加しなければならなかったため、Apache Tomcat インストールのフットプリントが大きくなり過ぎてしまうことがあります。または、server.xml ファイルに対する構成の変更により Apache Tomcat サーバーの再起動が必要となるため、サーバーの起動時間が問題になることがあります。または、サード・パーティ製のライブラリーを統合および維持するのに時間がかかり過ぎる場合もあります。

上記のいずれか 1 つにでも当てはまる場合、Apache Tomcat アプリケーションとその構成情報を IBM WebSphere Application Server V8.5.5 Liberty プロファイルへマイグレーションすることを検討する十分な理由となります。Liberty プロファイルは、小さなフットプリントと迅速なサーバー起動時間を可能にする軽量で使いやすいアプリケーション・サーバーを提供します。また、Apache Tomcat に含まれない多数の Java EE フィーチャーを含むため、サード・パーティ製のライブラリーを統合および維持する必要性が低減されます。

Liberty プロファイルを使用すると、次のことを実現できます。

  • ユーザーは小さなサーバー・フットプリントと高速のサーバー起動時間を実現しつつ、アプリケーションで必要なコンポーネントを構成できます。
  • 構成の変更によりサーバーを再起動する必要はありません。変更は自動的に適用されます。
  • WebSphere Application Server Developer Tools for Eclipse により、Liberty プロファイル上での Web アプリケーションの開発、テスト、およびパブリッシュが容易になります。
  • 構成はシンプルな XML ファイルを通じて行われます。WebSphere Application Server Developer Tools for Eclipse により、構成を表示および変更するための直感的なユーザー・インターフェースが提供されます。

WebSphere Application Server V8.5.5 Liberty プロファイルの詳細については、インフォメーション・センターおよび WASdev community を参照してください。

この記事では、Apache Tomcat から WebSphere Application Server V8.5.5 Liberty プロファイルにアプリケーションと構成情報をマイグレーションする手順について説明します。

ただし、WebSphere Application Server V8.5 での最適な互換性とパフォーマンスを得るには、構成をマイグレーションする前にアプリケーションのマイグレーションを実行する必要があります。このマイグレーションを容易にするために、IBM WebSphere Application Server Migration Toolkit「Application Migration Tool - Apache Tomcat to WebSphere」が利用可能です。このツールは、アプリケーション・コードをスキャンして必要なアップデートを検出し、可能な場合はクイック・フィックスを提供します。新しい構成マイグレーション・ツールである「Tomcat Config Migration」を、WASdev development blog で Tech Preview としてダウンロードできます。その後、このツールでサーバーおよびアプリケーションの構成のサブセットを Liberty プロファイルにマイグレーションできます。これらのマイグレーション・ツールを合わせて使用することで、Apache Tomcat から Liberty プロファイルに簡単で信頼性の高い方法でマイグレーションできます。

前提条件

この記事では、WebSphere Application Server Liberty プロファイルにマイグレーションおよびパブリッシュする予定のアプリケーションを、既に Apache Tomcat で構成済みであることを前提としています。この記事では、例として、IBM Redbooks パブリケーションに含まれる、パブリッシュ済みサンプル・アプリケーション (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. ターゲット・ランタイムを「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 では、アプリケーションで必要とされる特定の構成要素は、Apache Tomcat の conf ディレクトリー内に配置された server.xmlcontext.xml、または tomcat-users.xml ファイルに含まれています。マイグレーション・ツールを使用しない場合は、それらの構成情報を Liberty プロファイルのサーバー構成に手動でマイグレーションする必要があります。

次のサーバー構成情報がマイグレーションされます (存在する場合)。

  • IBM DB2、Apache Derby、Apache ActiveMQ、および IBM WebSphere MQ の conf/server.xml および conf/context.xml に存在するリソース
  • conf/server.xmlにある HTTP コネクター
  • conf/context.xml にあるセッション・マネージャー
  • conf/tomcat-users.xmlに配置されたユーザーおよびロール

マイグレーション用の Liberty プロファイル・サーバーをまだ作成していない場合は、次の手順に従って作成します。

  1. Eclipse で、「File」 > 「New」 > 「Other」の順に選択します。
  2. 「Server」 > 「Server」を選択し、「Next」をクリックします。
  3. サーバー・タイプ「WebSphere Application Server V8.5 Liberty Profile」を選択します。
  4. サーバー名「defaultServer」を設定します。
  5. 「Next」をクリックします。
  6. インストール・フォルダの下で、Liberty プロファイル・ランタイム環境をインストールした場所を入力します。
  7. 「Finish」をクリックします。

これで、ワークスペースに Liberty プロファイル・サーバー・インスタンスが含まれるようになります (図 1)。

図1.Liberty プロファイル・サーバーが表示されたEclipse ワークスペース

これで、Apache Tomcat サーバー構成を Liberty プロファイル・サーバーにマイグレーションできます。

  1. 「Run」> 「Tomcat Configuration Migration...」を選択します (または、Apache Tomcat サーバーが Eclipse で定義されている場合は、「Project Explorer」または「Servers」ペインのどちらかで Apache Tomcat サーバーを右クリックし、「Migrate Tomcat Configuration...」を選択し、下記の手順 j に進みます)。
  2. Apache Tomcat サーバーのインストール済み環境の場所を参照します。ファイル・フォルダーを選択し、「OK」をクリックします。
  3. マイグレーション先の Liberty プロファイル・サーバーを選択し、「OK」をクリックします。
  4. 「OK」をクリックして、完了ダイアログを閉じます。

この結果として、Liberty プロファイル・サーバーに、マイグレーションされた Apache Tomcat サーバー構成を持つ新しい migratedConfig ディレクトリーが含まれるようになります (図 2)。

図2.Apache Tomcat サーバー構成のマイグレーション後の Liberty プロファイル・サーバー

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.xml、context.xml、users-and-roles.xml ファイルを含む生成された構成ファイル (server-updates-for-config.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>
…

サンプル・アプリケーションでは、conf ディレクトリーの tomcat-users.xml ファイルで定義される「test」ユーザーおよび「Test」ロールも必要です (リスト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 プロファイルのサーバー構成に主導で移行する必要があります。

次の構成情報がマイグレーションされます (存在する場合)。

  • IBM DB2、Apache Derby、Apache ActiveMQ、および IBM WebSphere MQ の META-INF/context.xml に存在するリソース
  • WEB-INF/web.xml 内のアプリケーション・セキュリティー制約

アプリケーションが IBM DB2 またはApache Derby のリソースに依存する場合は、Apache Tomcat のインストール済み環境から Liberty プロファイルのインストール済み環境の ${shared.resources.dir} に、関連するデータベース JAR ファイルを最初にコピーする必要があります。

  1. Apache Tomcat のインストール済み環境の lib ディレクトリーから、Liberty プロファイルのインストール済み環境の usr/shared/resources ディレクトリーに、derby.jar をコピーします。
  2. Apache Tomcat のインストール済み環境の lib ディレクトリーから、Liberty プロファイルのインストール済み環境の usr/shared/resources ディレクトリーに、db2jcc4.jar および db2jcc_license_cu.jar をコピーします。

サンプル・アプリケーションでは、Apache Derby データベースが必要です。そのため、derby.jar ファイルを上記 (手順 a) のようにコピーする必要があります。現在 Apache Tomcat のインストール済み環境の lib ディレクトリーに derby.jar のコピーがない場合は、必要な Apache Derby ファイルをダウンロードできます (例えば、バージョン 10.8.2.2 用にダウンロードする特定のファイルは、「db-derby-10.8.2.2-bin.zip」となります)。

図3.Liberty プロファイル・インストールのデータベース・リソースの場所

これで、アプリケーション構成をマイグレーションできます。

  1. アプリケーションのプロジェクトを右クリックし、「Migrate Tomcat Configuration...」を選択します。
  2. マイグレーション先の Liberty プロファイル・サーバーを選択し、「OK」をクリックします。
  3. 「OK」をクリックして、完了ダイアログを閉じます。

この結果、Liberty プロファイル・サーバーの migratedConfigprofile ディレクトリー下に、アプリケーション名が付いた新しいサブディレクトリーが含まれるようになります。サンプル・アプリケーションの場合、新規に作成された RedbookLibrary ディレクトリーに、マイグレーションされたアプリケーション構成が含まれます (図 4)。

図4.アプリケーション構成のマイグレーション後の Liberty プロファイル・サーバー

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)、および application-config-context.xml と application-config-web.xml ファイルを含む生成された構成ファイル (server-updates-for-application.xml) も存在します。server-updates-for-application.xml ファイルは、Liberty の server.xml に含まれます。このようにして、マイグレーションされた構成は Liberty サーバーの構成に追加されます。

サンプル・アプリケーションに必要なアプリケーション構成について検討してみましょう。サンプル・アプリケーションでは、META-INF/context.xml ファイル内で構成される 2 つのローカル・データ・ソース (リスト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 ディレクトリーに、2つの dataSources が構成された application-config-context.xml ファイルが含まれるようになります (リスト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 プロファイル・サーバー上でマイグレーションされたアプリケーションを実行します。


4. Liberty プロファイル上でのアプリケーションの実行

アプリケーション構成のマイグレーションの結果、アプリケーションは Liberty プロファイル・サーバーにパブリッシュされました。後は、サーバーを起動してアプリケーションにアクセスするだけです。

  1. Eclipse で、Liberty プロファイル・サーバーを右クリックして、「Start」を選択します。
  2. 「Console」ペインでアプリケーション URL をクリックするか、またはお使いの Web ブラウザーでアプリケーション URL を入力します。サンプル・アプリケーションでは、URL は「http://localhost:8080/RedbookLibrary/」です。
図5.「Console」ペインでアプリケーション URL をクリックして Eclipse でアプリケーションを実行
Figure 5. Run the application in Eclipse by clicking the application URL in the Console pane

サンプル・アプリケーションをテストするには、次の手順を行います。

  1. 「Build The Databases」をクリックします。
  2. ユーザー名とパスワードを求めるプロンプトが出されたら、両方に「test」と入力します。
  3. メイン・ページに戻り、「Populate the Database with test data」をクリックします。
  4. メイン・ページに戻り、ユーザー ID「user1」とパスワード「password1」でログインします。

上記の手順 d では、マイグレーションされたユーザーおよびロールはマイグレーションされたアプリケーション・セキュリティー制約とともに使用されることに注意してください。その際には「Test」ロールのメンバーであるユーザーがログインしてテスト・データを作成する必要があります。

Liberty プロファイル・サーバーでのサンプル・アプリケーションのテストの詳細については、WebSphere Application Server V8.5 Migration Guide の 9.4.8 章を参照してください。


まとめ

この記事では、Apache Tomcat から WebSphere Application Server Liberty プロファイルに、「Application Migration Tool – Apache Tomcat to WebSphere」(アプリケーションのマイグレーション用)」および「Tomcat Config Migration Tech Preview」(構成のマイグレーション用) を使用して、アプリケーションおよびその構成をマイグレーションする方法について説明しました。これらのユーティリティを使用してプロセスを簡素化することにより、かつてなく容易で信頼性の高い Liberty プロファイル・サーバーへのマイグレーションが実現します。

参考文献

学ぶために

製品や技術を入手するために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=WebSphere
ArticleID=966778
ArticleTitle=Apache TomcatからWebSphere Application Server Libertyプロファイルへのマイグレーション
publish-date=04032014