MTAを使用してWebLogic/WebSphereからJBoss EAPへの移行を検討する

Red Hat のソリューションアーキテクトをしている瀬戸です。

このたびJBoss EAPや他のJavaアプリケーションサーバーが依存しているJava EE/J2EE仕様がJakarta EE仕様と名前を変えてリリースされます。

前回の大きな仕様変更が行われたのはJava EE 8が2017年9月にリリースされた時で、それからおおよそ5年ぶりの大きな仕様変更となります。

その中にはネームスペースの変更や一部機能の削減も含まれており、また、WebSphereはOpenLibertyとして作り直され互換性への影響もあり、 それならとJBoss EAPへの移行を検討されている方もいらっしゃると思います。

Jakarta EE対応のEAPはまだリリースされていませんが、事前に検討だけでもしておくことは良いことです。

以前、JBoss EAP 6のセキュリティフィックスが行われなくなるのでEAP 7への移行を検討するという記事で紹介したMTA(Migration Toolkit for Applications)を使用することで WebLogic/WebSphereからEAPへの移行に必要な作業も見積もることができます。

MTAはいわゆる静的解析ツールで、ルールに基づいて移行に必要な作業を見つけ出すことができます。

前回の記事ではGUI形式での機能の紹介をしました。 今回の記事では、CI環境に組み込むことを前提にコマンドラインで操作をしてみたいと思います。

※初めて行う場合は直感的に操作できるGUIの方が楽です。慣れるまではそちらを使用することをお勧めします。 前回の記事ではGUIでの使用方法を説明していますので、そちらを参照してください。 Optionsのsourceにeap6の代わりにweblogicもしくはwebsphereを指定する必要があるだけで、他の使用方法は全く同じです。

また、移行作業に必要なすべての作業をMTAで漏れなく見つけだすことはできない点は注意してください。 例えば、個別の業務ロジックに紛れ込んでいる環境固有のコードは別途修正する必要がありますし、必要に応じて性能検証を行う必要もあります。

この記事は以下の環境で動作確認しています。

Windows 11 Pro 22000.856
openjdk version "11.0.16" 2022-07-19 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.16+8-2) (build 11.0.16+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.16+8-2) (build 11.0.16+8-LTS, mixed mode)

※この記事ではコマンド例はすべてWindows版で記載されていますが、Mac、Linux等でも動作可能です。

MTA(Migration Toolkit for Applications)の入手

MTAは以下のページからダウンロードすることができます。※要Red Hatアカウント

developers.redhat.com

今回はコマンドライン版を使用します。

ページを下に移動して、All DownloadsからMigration Toolkit CLI版をダウンロードします。この記事ではv5.3を使用しています。

zipファイルがダウンロードされますので適切な位置に解凍してください。

使い方

コマンドプロンプトを使用して解凍先の .\bin に移動して、

mta-cli.bat

を実行することで解析を行うことができます。

主に指定するオプションは以下の通りです。

  • --source 移行元がWebLogicなら weblogic 、 WebSphere なら websphere
  • --target 移行先のアプリケーションサーバー、EAPの場合は eap:7
  • --input 解析対象のwar、earもしくはフォルダ
  • --sourceMode (オプション)フォルダを指定する場合に指定
  • --output レポートの出力先フォルダ
  • --packages (オプション)解析対象のパッケージ、指定しない場合は依存ライブラリも含めてすべて解析してしまい時間がかかるので、指定するのを強く推奨、複数指定する場合はスペース区切り
  • --exportCSV (オプション)指定すると追加でCSVファイルを出力する、何か別のツールで統計を取りたい場合にあると便利なので、とりあえず指定する(オーバーヘッドはほぼない)
  • --overwrite (オプション)指定するとレポートの出力先にすでにファイルがあった場合に無確認で上書きする(指定しない場合はプロンプトで確認を求められる)

コマンドのサンプルとしては以下のようになります。

  • WebLogicのear(もしくはwar)ファイルを解析する。
mta-cli --source weblogic --target eap:7 --input C:\source.ear --output c:\EXPORT_DIR --packages com.acme --exportCSV
  • WebLogicのソースコードの入ったプロジェクト(フォルダ)を解析する。
mta-cli --source weblogic --target eap:7 --input C:\SOURSE_DIR --sourceMode --output c:\EXPORT_DIR --packages com.acme --exportCSV
  • WebShepreのearファイルを解析して解析結果を解析する。出力先のフォルダがすでにあった場合は削除してから出力する。
mta-cli --source websphere --target eap:7 --input C:\source.ear --output c:\EXPORT_DIR --packages com.acme --exportCSV --overwrite

解析結果を確認する

解析結果はoutputに指定したフォルダに出力されます。中身自体は前回の記事で説明したものと全く一緒ですので、そちらを参照してください。

まとめ

Javaのアプリケーションサーバーの移行は古いサーバーの機能と新しいサーバーの機能の両方を知らないといけないため、通常は大きな労力がかかりますが、MTAを使用することで労力を削ることができます。 移行時の選択肢が増えることは良いことだと思いますし、簡単に実行することもできますので、ぜひ試してみてください!

また、MTAはここで紹介した以外にもいくつかのオプションを備えています。 今回は紹介しませんでしたが、まだEAPが対応していないJakarta EE*1への移行についても解析できるオプションも提供されています。そちらはEAP専用というわけではなくすべてのEEアプリに使用できます。EAPへの移行をしない場合でも試す価値はあります。 使い込みたい場合はマニュアルを参照してみてください。

access.redhat.com

参考資料

JBoss EAP 6のセキュリティフィックスが行われなくなるのでEAP 7への移行を検討する https://rheb.hatenablog.com/entry/2022/05/13/JBoss_EAP_6%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%AE

MTA ダウンロード(要Red Hatアカウント)
https://developers.redhat.com/products/mta/download

Migration Toolkit for Applications の概要
https://access.redhat.com/documentation/ja-jp/migration_toolkit_for_applications/5.3/html/introduction_to_the_migration_toolkit_for_applications/index

Migration Toolkit for Applications CLI ガイド https://access.redhat.com/documentation/ja-jp/migration_toolkit_for_applications/5.3/html-single/cli_guide/index

*1:upstreamのwildflyではすでに対応されています。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。