本文へジャンプ

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


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

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

  • 閉じる [x]

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

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

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


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

  • 閉じる [x]

WebSphere Migration Tool ~WebLogicからWASへの具体的なマイグレーションの動きについて

Donald Vines, Executive IT Architect, IBM
Author photo
Donald Vinesは現在エグゼクティブITアーキテクトであり、IBM社内で、北米におけるWebSphereの移行に関する実務の責任者です。
Andy Hoyt, WebSphere Development Manager, IBM
Author photo
Andy Hoytは現在、開発マネージャーであり、IBM社内でWebSphere Migration Toolの開発責任者です。

概要: IBM® WebSphere® Application Server Migration Toolkit は、現在お使いのアプリケーション・サーバーからIBM WebSphere Application Server V7.0へ簡単にアプリケーションを移行することができるアプリケーションのマイグレーションツールを提供します。この記事では、マイグレーションツールの機能について紹介し、このツールを使用する際の手助けとなる情報をご提供します。このコンテンツは IBM WebSphere Developer Technical Journal. に含まれています。(一部日本側で補足追加をしてあり原文にはない部分があります。)

日付:  2010年 1月 27日
レベル:  初級 この記事の原文:  英語
アクティビティー: 7106 ビュー
お気軽にご意見・ご感想をお寄せください: 


アプリケーションの分析とマイグレーションをより簡単に

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のJavaソースファイルを検知します。これにはサーブレット、EJBコンポーネント、Javaクラスが含まれます。このツールはEclipseのワークプレース上の全てのJavaファイルを解釈し、移行に関する問題に対する(判定のための)ルールを適用し、問題点とその問題に対するクイックフィックス(暫定対処法)を表示します。
(下記一覧表を参照)


表1 Javaソースファイル
Javaソースファイルに関する(移行)ルールクイックフィックス(暫定対処法)
項目1WebLogic RMI APIコールを使用しない。Java標準のRMIクラスとAPIを使用するようにソースコードを変更する。
具体的内容WebLogic依存のRMIクラスとAPI参照を検知する。
項目2WebLogic固有のJNDI名を使用しない。該当コードをWASのJNDI名に変える、もしくは互換性のあるJNDIルックアップを使用するようにコードを変更する。具体的には以下の通り。
  • java.naming.factory.initial = com.ibm.websphere.naming.WsnInitialContextFactory
  • java.naming.provider.url = corbaloc:iiop:localhost:2809
具体的内容WebLogic固有のJNDI名を使用の使用を検知するためにJavaファイルのスキャンを行う。
具体的には以下のものを検知する。
  • java.naming.factory.initial = weblogic.jndi.WLInitialContextFactory
  • java.naming.provider.url = t3://localhost:7001
項目3WebLogic依存のスタートアップまたはシャットダウンクラスを使用しない。該当するクラスを標準の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
項目6WebLogic依存のApacheパッケージを使用しない。コードをオープンソースのApacheクラスとAPIを使用するように変更する。
Apache Xerces.jarをダウンロードして該当アプリケーションに組み込む必要がある。
具体的内容オープンソースのApacheクラスとAPIにマッピング可能なWebLogic依存のApacheクラス参照に対してフラグを立てる

1EJBでは実装classを重視して、I/F、抽象class間の不一致を重視しないため。

JSPソースファイル

プラグインは、拡張子jsp.を持つJSPソースファイルを検知し、Eclipseのワークスペース上の全てのファイルに対して移行に関する問題を発見するためにルールを適用し、クイックフィックスを提示します。
Javaソースファイルと同じように、JSPソースファイルは互換性のないクラス、API、定数を参照している可能性があることに注意してください。
プラグインは、既に記載したのと同じやり方で移行に関する問題を検知し、それらの問題の処理を行います。
(概要を以下の表に示します。)


表2 JSPソースファイル
JSPソースファイルルールクイックフィックス(暫定対処法)
項目1JSPフラグメントに関して拡張子.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 デプロイメントディスクリプターファイル
デプロイメントディクスリプターファイルのルールクイックフィックス(暫定対処法)
項目1EJB参照に関して、標準のディプロイメントディスクリプターを使用する3weblogic.xmlファイルの中で定義された全てのEJB参照を標準のweb.xmlディプロイメントディスクリプターに移行する
項目2リソース参照名に関して標準のデプロイメントディスクリプターを使用するWebLogic固有デプロイメントディスクリプターで定義されている全てのリソース参照を標準デプロイメントディスクリプターに移行する
WebLogic固有のデプロイメントディスクリプター(weblogic.xml)は、データソースとJNDI名を対応付けるためのリソース参照が指定できる4
項目3WebLogic Webサービスデプロイメントディスクリプターを使用しないデプロイメントディスクリプターから収集した情報をベースにしたWebサービスに対する適切なArtifact(成果物)を生成するために、WAS ANTタスクで実行可能なANTスクリプトを生成する
このFixでは、必要であればサービスエンドポイント(SEI)を生成し、それをプロジェクトのクラスパスに追加する
この後、ANTスクリプトを実行すれば、Webサービスの移行が可能
Webサービスデプロイメントディスクリプター、具体的には次のいずれかを探す
  • web-services.xml
  • 同一フォルダ(ディレクトリ)にあるweblogic-webservices.xmlとJava EE deployment descriptor (webservices.xml)

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をダウンロードして使ってみてください。 さらなるヘルプとしてスタートガイドが提供されており、フォーラムで実際の利用例を共有したり、フィードバックを行うこともできます。


参考文献

学ぶために

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

議論するために

著者について

Author photo

Donald Vinesは現在エグゼクティブITアーキテクトであり、IBM社内で、北米におけるWebSphereの移行に関する実務の責任者です。

Author photo

Andy Hoytは現在、開発マネージャーであり、IBM社内でWebSphere Migration Toolの開発責任者です。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


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=478925
ArticleTitle=WebSphere Migration Tool ~WebLogicからWASへの具体的なマイグレーションの動きについて
publish-date=01272010
author1-email=dhvines@us.ibm.com
author1-email-cc=
author2-email=ahoyt@us.ibm.com
author2-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。