IBM WebSphere Application Server Migration Toolkit のマイグレーションツールは、現在お使いのアプリケーション・サーバーからWebSphere Application Server V7.0(以降、WAS V7)へのアプリケーションの移行をより容易にします。移行対象のアプリケーション・サーバーとして、現在WebLogic 8.1とWebLogic9.2をサポートしています。アプリケーション・マイグレーション・プラグインは、インポートされたEARファイルを対象とします。マイグレーションツールは、移植する際に問題となるJSPやJavaコード、デプロイメント記述子をスキャンし、Eclise IDEのProblemビューで問題を報告します。これらの問題のほとんどはツールが検出し、多くの場合、ツールが提供するクイックフィックスで解決することができます。
万が一このツール(WebSphere Migration Tool)をあまりご存じでない場合、ここにWebSphere Applicaiton Migration Toolの(具体的)機能の一覧を記述しますので、このツールを使い始めるに際して、下記にある特長・アドバイスにしたがってツール本体や参考ドキュメントなどのダウンロードにお役立てください。
アプリケーション・マイグレーションツールは、IBM Rational® Software Analyzer V7.1がベースとなっており、移行元のアプリケーション・サーバーからWebSphere Application Server(以降、WAS)へのマイグレーションのアシストを行います。Rational Software Analyzer はソフトウェア分析に関してシンプルかつ強力なツールであり、より良いソフトウェア品質を提供します。コードの解析を行うにあたり、Rational Software Analyzerは膨大な量のルールを使用します。加えて、特定の環境、目的に適応するカスタムのルールを作成することも可能です。
これを受けて、コードを移植する際の問題に関してカスタムルールが作成され、その問題を解決するクイックフィックスと一緒にツールが提供されます。これらのカスタムルールは、無償でダウンロード可能な(追加ライセンスも不要)Eclipse 3.4.2のプラグインと同梱されて提供されます。
プラグインはインポートされたEARファイルを対象として解析を行います。EclipseのワークスペースでJavaのソースコードやJSP、デプロイメント記述子の解析を行い、Problemビューでマイグレーションの問題をレポートします。マイグレーションツールは、クラスファイルではなくソースファイルに対して分析を行うため、ツールを使用する前にWASでアプリケーションを完全にコンパイルする必要はありません。
分析が完了した後は、Problemビューのそれぞれの結果を右クリックし、次のオプションから対処することができます:
- View Result はルールを適用するソースファイルのエディターを開きます。問題が検知された行がハイライトされ、ラインの横にルール違反のアイコンが表示されます。
- Quick Fix はJavaコードやJSP、デプロイメント記述子を修正するマイグレーションを実行します。クイックフィックスはファイルディレクトリーや修正するために必要なステップを変更します。
- Quick Fix Preview ではアップデートを行う前に、元のコードと修正候補のコードを並べて比較することができます。
- Ignore Result はファイルの変更を行わずにリストからルールを除去します。
- Quick Fix All は修正候補のルールをすべて適用します。
クイックフィックスを適用するか、手作業で修正するかを選択することができます。1つずつフィックスの適用対象コードを確認しない場合には、すべての変更を適用することも可能です。変更のレビューが完了すれば、EclipseからEARファイルをエクスポートし、WASにデプロイすることができます。
このプラグインはknowledge-basedのマイグレーションサポートツールです。つまり、元のアプリケーション・サーバーやWASに関して豊富な知識が無くても、マイグレーションを実行することができます。
WebSphere Migration Toolの動作について
もし移行対象のアプリケーションがまだEclipse上にない場合には、移行を行う前に予めEARファイルをインポートしておかなければなりません。JavaソースファイルとJSPソースファイルがEARに含まれない場合、このツールはデプロイメントディスクリプターファイルの移行用のルールだけを実行します。EARファイルにソースファイルが含まれる場合には、このツールは以下のものを移行するためのルールを実行します。
- Javaソースファイル
- JSPソースファイル
- デプロイメントディスクリプターファイル
- クラスパス
プラグインには、Javaソースファイル、JSPソースファイル、ディプロイメントディスクリプターファイル用のパーサー(解釈プログラム)に加えて、製品固有の(プロプライエタリーな)クラス、API、定数の使用とJavaEE仕様に対する製品の相違点を検知するルールが含まれています。上記にあげたファイルの移行に関して問題となる箇所を発見するために、これらのルールは有効な役割を果たしています。
次のセクションでは、上記ファイルに対するルールとクイックフィックス(暫定対処法)の一部を紹介します。
このプラグインは、拡張子が.javaのJavaソースファイルを検知します。これにはサーブレット、EJBコンポーネント、Javaクラスが含まれます。このツールはEclipseのワークプレース上の全てのJavaファイルを解釈し、移行に関する問題に対する(判定のための)ルールを適用し、問題点とその問題に対するクイックフィックス(暫定対処法)を表示します。
(下記一覧表を参照)
表1 Javaソースファイル
| Javaソースファイルに関する(移行)ルール | クイックフィックス(暫定対処法) | |
|---|---|---|
| 項目1 | WebLogic RMI APIコールを使用しない。 | Java標準のRMIクラスとAPIを使用するようにソースコードを変更する。 |
| 具体的内容 | WebLogic依存のRMIクラスとAPI参照を検知する。 | |
| 項目2 | WebLogic固有のJNDI名を使用しない。 | 該当コードをWASのJNDI名に変える、もしくは互換性のあるJNDIルックアップを使用するようにコードを変更する。具体的には以下の通り。
|
| 具体的内容 | WebLogic固有のJNDI名を使用の使用を検知するためにJavaファイルのスキャンを行う。 具体的には以下のものを検知する。
| |
| 項目3 | WebLogic依存のスタートアップまたはシャットダウンクラスを使用しない。 | 該当するクラスを標準のjavax.servlet.Servlet.ContextListenerインターフェースに変換し、アプリケーションのweb.xmlファイルに登録を行う。 |
| 具体的内容 | WebLogicスタートアップ/シャットダウンインターフェースの実装をしているクラスを探す。 | |
| 項目4 | 標準に準拠しないUserTransactionルックアップ名を使用しない。 | BMT beanで問題が見つかった場合、クイックフィックスは、該当beanをctx.getUserTransaction()を使用するように変換する。 もしservletかclientコードで問題が見つかった場合には、クイックフィックスは、JNDIルックアップctx.lookup"java:comp/UserTransaction"を使用するように変換。 |
| 具体的内容 | BMT beanとservlet中のctx.lookup"javax.transaction.UserTransaction"に対する参照を探す。(WebLogicはこのような標準に準拠しないルックアップを許容するが、WebSphereは許容しない) | |
| 項目5 | インターフェース定義と一致しないthrows句を使わない。 | EJB beanに対して、不足している例外を追加し、余計な例外を除去する。HomeインターフェースとRemoteインターフェースは変更しない。 |
| 具体的内容 | EJB beanのメソッドと、home/remoteインターフェースにおけるthrows句の不一致を見つける。 (WebLogicの場合はこのような不一致を許容するが、WebSphereは許容しない)1 | |
| 項目6 | WebLogic依存のApacheパッケージを使用しない。 | コードをオープンソースのApacheクラスとAPIを使用するように変更する。 Apache Xerces.jarをダウンロードして該当アプリケーションに組み込む必要がある。 |
| 具体的内容 | オープンソースのApacheクラスとAPIにマッピング可能なWebLogic依存のApacheクラス参照に対してフラグを立てる |
1EJBでは実装classを重視して、I/F、抽象class間の不一致を重視しないため。
プラグインは、拡張子jsp.を持つJSPソースファイルを検知し、Eclipseのワークスペース上の全てのファイルに対して移行に関する問題を発見するためにルールを適用し、クイックフィックスを提示します。
Javaソースファイルと同じように、JSPソースファイルは互換性のないクラス、API、定数を参照している可能性があることに注意してください。
プラグインは、既に記載したのと同じやり方で移行に関する問題を検知し、それらの問題の処理を行います。
(概要を以下の表に示します。)
表2 JSPソースファイル
| JSPソースファイルルール | クイックフィックス(暫定対処法) | |
|---|---|---|
| 項目1 | JSPフラグメントに関して拡張子.jspの使用を避ける。 | リファクターダイアログを用いてファイル名とそのファイルへの参照を変更する。 |
| 具体的内容 | JSPフラグメントを見つけ出す 拡張子.jspfではなく、拡張子.jspのJSPフラグメントファイルが対象。JavaEE仕様によると、すべてのJSPは必ずコンパイルしなければならないが、JSPフラグメントは対象外。 | |
| 項目2 | タグ・属性名の大文字・小文字を正しく表記する | 影響のあるJSPソースファイルの中にあるタグの表記を、タグライブラリーで定義された表記に合うように変更する。 |
| 具体的内容 | JSPの中で大文字・小文字の表記が誤っているタグ・属性名にフラグを付ける。 XML仕様によると、タグ・属性名は大文字小文字を区別することになっている。(WASはこのルールを適用するが、WebLogicは無視する)2 |
2TLD(Tag Library Descripter (カスタムタグ動作定義XML)はcase sensitiveだが、JSPはcase sensitiveでないimplementationのケースが多いため。JSPコンテナー経由もしくは、プリコンパイラーで実際にServletとして動かしてみないと動作が分からない部分があるので、JSPのmigrationは要注意。
プラグインは、ファイル名によってベンダー固有の(つまりWebLogic固有の)デプロイメントディスクリプターファイルを検知します。(具体的には、weblogic.xml, weblogic-ejb-jar.xml, weblogic-webservices.xmlなど)。他のファイルと同様、プラグインはデプロイメントディスクリプターを解釈し、移行における問題を探し出すためにルールを適用し、(そのための)クイックフィックスを適用します。
(概要を以下に示します。)
表3 デプロイメントディスクリプターファイル
| デプロイメントディクスリプターファイルのルール | クイックフィックス(暫定対処法) | |
|---|---|---|
| 項目1 | EJB参照に関して、標準のディプロイメントディスクリプターを使用する3 | weblogic.xmlファイルの中で定義された全てのEJB参照を標準のweb.xmlディプロイメントディスクリプターに移行する |
| 項目2 | リソース参照名に関して標準のデプロイメントディスクリプターを使用する | WebLogic固有デプロイメントディスクリプターで定義されている全てのリソース参照を標準デプロイメントディスクリプターに移行する |
| WebLogic固有のデプロイメントディスクリプター(weblogic.xml)は、データソースとJNDI名を対応付けるためのリソース参照が指定できる4 | ||
| 項目3 | WebLogic Webサービスデプロイメントディスクリプターを使用しない | デプロイメントディスクリプターから収集した情報をベースにしたWebサービスに対する適切なArtifact(成果物)を生成するために、WAS ANTタスクで実行可能なANTスクリプトを生成する このFixでは、必要であればサービスエンドポイント(SEI)を生成し、それをプロジェクトのクラスパスに追加する この後、ANTスクリプトを実行すれば、Webサービスの移行が可能 |
Webサービスデプロイメントディスクリプター、具体的には次のいずれかを探す
|
3WebLogic固有のデプロイメントディスクリプター(weblogic.xml)では、セッションbeanとJNDI名を対応付けるためのEJB参照が指定できる
4項目2は、EJB以外のデーターソースに関するデプロイメントディスクリプターでのJDBC参照に関する記述
クラスパスの見直しでは、クラスパスが適切にセットされていることの確認を行います。
(概要を以下に示します)
表4
| クラスパス見直しルール | クイックフィックス(暫定対処法) | |
|---|---|---|
| 項目 | アプリケーションクラスパスに関してMANIFEST.MFを使用する | モジュールのMANIFEST.MFファイルのクラスパスエントリーを更新して、影響のあるモジュールのクラスパスを追加する クラスとライブラリーをクラスパスに追加する際には、この方法が業界標準である |
| 具体的内容 | EARファイルのAPP-INFフォルダーにあるクラスとライブラリーを探す。 WebLogicはEARファイルに対して独自拡張を行っており、暗黙的にこれらのクラスとライブラリーをクラスパスに追加する |
このアプリケーション移行ツールの詳細なガイドはこの記事の範囲外ですが、ツールを使っていただくための第一歩として、このツールのいくつかの重要な特徴を図1で示します。続いて必要な詳細情報の全てを提供する「Resources」を示します。
図1は、MigrationツールでWebLogicのスタートアップクラスをWebSphere Application Serverに移行する際のスクリーンショットです。
この中では、
- Javaソース比較パネルではクイックフィックスによる見直し、訂正機能の例を示しています。(このうち)左半分のパネルはクイックフィックスが適用されれば、どうなるかを示し、右半分は適用前のオリジナルのソースコードを示しています。
- 右側のカラムの「Help」タブは(移行)ルールと適用されるクイックフィックスに関する内容説明です。
- Javaソース比較パネルは、コードを移行するに当たって使用可能なオプションを示しています。このオプションの中には次のものが含まれます。
- スキャンをしたファイルの参照
- クイックフィックスによるファイルの変更
- クイックフィックスによる見直しを行った場合のクイックフィックスのプレビュー
- 結果を無視する(破棄)
- ルール適用による全該当箇所の修正
図1 Application Migration Toolによる解析結果
今現在WebSphere Application Serverへの移行を行っている、もしくは将来においてアプリケーションの移行計画がある場合には、Migration Toolをダウンロードして使ってみてください。 さらなるヘルプとしてスタートガイドが提供されており、フォーラムで実際の利用例を共有したり、フィードバックを行うこともできます。
学ぶために
製品や技術を入手するために
-
IBM WebSphere Application Server Migration Toolkitをダウンロード
-
IBM WebSphere Application Server 試用版をダウンロード
-
IBM Rational
Application Developer 試用版をダウンロード (US)
議論するために

