第8章 JBoss EAP の旧リリースからの移行
8.1. JBoss EAP 5 から JBoss EAP 7 への移行
本ガイドは、JBoss EAP 6 のアプリケーションを JBoss EAP 7 で正常に実行するために必要な変更に重点を置いています。アプリケーションを直接 JBoss EAP 5 から JBoss EAP 7 に移行する計画がある場合、移行の計画や実行に役立つリソースが複数あります。以下を行うことが推奨されます。
- 本ガイドの「各リリースに追加された変更の概要」で、JBoss EAP の各リリースに追加された変更の概要を確認します。
- JBoss EAP 6 の『移行ガイド』と本ガイドを読み、両方の内容を把握します。
- 特定のコンポーネントや機能に関する移行情報のリファレンスとして、JBoss EAP 5 コンポーネントのアップグレードリファレンス を使用します。
- ルールベースの Red Hat Application Migration Toolkit は、直接 JBoss EAP 5 から JBoss EAP 7 に移行するのに役立つツールを継続して追加します。これらのツールを使用してアプリケーションを分析し、JBoss EAP 7 への移行に必要な変更に関する詳細なレポートを生成します。詳細は、「Red Hat Application Migration Toolkit を使用した移行のアプリケーションの分析」を参照してください。
- カスタマーポータルのナレッジベース では、現在 JBoss EAP 5 から JBoss EAP 6 への移行に役立つ記事やソリューションを利用できます。JBoss EAP 5 から JBoss EAP 7 への移行に関するコンテンツを徐々に追加する計画があります。
8.2. 各リリースに追加された変更の概要
移行を計画する前に、JBoss EAP 6 と JBoss EAP 7 で追加された変更について認識できるようにしてください。
『JBoss EAP 6 移行ガイド』は、JBoss EAP 5 と JBoss EAP 6 との間で追加された変更を取り上げています。以下に、JBoss EAP 6 に追加された最も重要な変更の一覧を示します。
- モジュラーサービスコンテナーに構築される新しいアーキテクチャーを実装しました。
- Java Enterprise Edition 6 仕様の認定実装でした。
- ドメイン管理、新しいデプロイメント設定、および新しいファイルディレクトリー構造とスクリプトが導入されました。
- 新しい移植可能な JNDI ネームスペースを標準化しました。
JBoss EAP 6 に加えられた変更の詳細なリストは、JBoss EAP 6『移行ガイド』の「JBoss EAP 6 の新機能と変更内容」を参照してください。
JBoss EAP 7 は、JBoss EAP 6 と同じモジュラー構造に構築され、同じドメイン管理、デプロイメント設定、ファイルディレクトリー構造、およびスクリプトが含まれます。また、同じ標準化された JNDI ネームスペースも使用します。しかし、JBoss EAP 7 には以下の変更が追加されています。
- Java Enterprise Edition 7 仕様のサポートが追加されています。
- Web サーバーが Undertow に置き換えられました。
- JacORB IIOP 実装が OpenJDK ORB ダウンストリームブランチに置き換えられました。
- Apache ActiveMQ Artemis が新しいメッセージングプロバイダーとして含まれています。
-
cmp
、jaxr
、およびthreads
サブシステムが削除されました。 - DJB エンティティー bean のサポートが削除されました。
変更の完全リストは、JBoss EAP 7 の新機能 を参照してください。
8.3. Migration Guide (移行ガイド) の内容確認
各リリースの Migration Guide (移行ガイド) の内容をすべて確認し、追加された機能や非推奨となった機能について認識し、そのリリースの既存アプリケーションの実行に必要なサーバーの設定およびアプリケーションの変更について理解するようにしてください。
JBoss EAP 6 と JBoss EAP 7 の間では基盤のアーキテクチャーは変更されていないため、JBoss EAP 6 の『移行ガイド』に記載されている多くの変更内容は JBoss EAP 7 にも該当します。たとえば、「ほとんどのアプリケーションで必要な変更」に記載されている変更は、JBoss EAP 6 で追加された基盤のアーキテクチャーの変更に関連し、本リリースにも該当します。新しいモジュラークラスローティングシステムへの変更は重要で、ほぼすべての JBoss EAP 5 アプリケーションのパッケージ化や依存関係に影響します。「アプリケーションのアーキテクチャーやコンポーネントによって異なる変更」に記載されている変更の多くは、JBoss EAP 7 にも該当します。しかし、JBoss EAP 7 では web サーバー、 ORB、およびメッセージングプロバイダーが置き換えられ、cmp
、threads
、および jaxr
サブシステムが削除され、さらに EJB エンティティー bean のサポートが削除されたため、これらのコンポーネントに関する変更については本書を参考にする必要があります。移行を始める前に、本ガイドの「サーバー設定の変更」および「アプリケーション移行の変更」に注意してください。
8.4. JBoss EAP 5 コンポーネントのアップグレードリファレンス
以下の表を使用して、特定の機能またはコンポーネントを JBoss EAP 5 から JBoss EAP 7.1 に移行する方法を検索してください。
JBoss EAP 5の 機能またはコンポーネント | 変更の概要および 移行情報の場所 |
---|---|
アプリケーションのパッケージ化およびクラスローティング |
JBoss EAP 6 では、以前の階層的なクラスローディング構造が JBoss Modules を基にしたモジュラーアーキテクチャーに置き換えられました。新しいモジュラークラスローディング構造の導入に伴い、アプリケーションのパッケージ化も変更になりました。このアーキテクチャーは JBoss EAP 7 でも使用されています。新しいモジュラーアーキテクチャーに関する情報は、JBoss EAP 7.1『開発ガイド』の以下の章を参照にしてください。 新しいモジュラーアーキテクチャーのアプリケーションの更新および再パッケージ方法に関する情報は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 |
アプリケーション設定ファイル |
モジュラークラスローディングを使用する JBoss EAP 6 の変更に伴い、1 つ以上のアプリケーション設定ファイルを作成または編集して依存関係を追加したり、自動的な依存関係がロードされないようにする必要がある場合があります。これは JBoss EAP 7 でも変わっていません。詳細は、JBoss EAP 6 『移行ガイド』の以下の項を参照してください。 |
キャッシュおよび Infinispan |
JBoss EAP 6 では、サーバーによる内部使用のみで JBoss Cache が Infinispan に置き換えられました。アプリケーションコードで JBoss Cache を置き換える方法については、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 JBoss EAP 7 で適用された Infinispan キャッシングストラテジーと設定の変更は、本ガイドの以下の項を参照してください。 |
データソースおよびリソースアダプター |
JBoss EAP 6 ではデータソースとリソースアダプターの設定が主に 1 つのファイルに集約されましたが、これは JBoss EAP 7 でも同様です。詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 |
ディレクトリー構造、スクリプト、およびデプロイメント設定 |
JBoss EAP 6 では、ディレクトリー構造、スクリプト、およびデプロイメント設定が変更になりました。これらの変更は JBoss EAP 7 にも該当します。詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 |
EJB |
Java EE 7 仕様によって、EJB 2.x およびそれ以前の機能が任意となったため、アプリケーションを書き直して EJB 3.x 仕様と JPA を使用するようにすることが強く推奨されます。非推奨となった機能と EJB 2.x の実行に必要な変更については、JBoss EAP 6 『Migration Guide』の以下の項を参照してください。
JBoss EAP 6 では、ステートフル EJB キャッシュおよびステートレスセッション bean プールサイズはサーバー設定ファイルの JBoss EAP 7 では、デフォルトのリモートコネクターとポートが変更になりました。この詳細とサーバー設定の変更については、本ガイドの以下の項を参照してください。 JBoss EAP 7 では、EJB エンティティー bean がサポートされません。エンティティー bean を JPA に移行する方法は、本ガイドの以下の項を参照してください。 |
Hibernate および JPA |
JBoss EAP 6 では、Hibernate がバージョン 3 から 4 に更新されました。この JBoss EAP バージョンは JPA 2.0 仕様も実装し、JPA 永続プロパティーに変更が加えられました。これらの変更に合わせてアプリケーションを編集する方法については、JBoss EAP 6『移行ガイド』を参照してください。 JBoss EAP 7 は JPA 2.1 を実装し、Hibernate 5 が含まれます。また、Hibernate Search をバージョン 4.6.x からバージョン 5.5.x に更新します。その他の変更には、EJB エンティティーbean のサポートの削除や JPA 永続プロパティーの追加更新が含まれます。これらの変更によるアプリケーションへの影響に関する情報は、本ガイドの以下の項を参照してください。 |
JAX-RS および RESTEasy |
JBoss EAP 6 は、自動的に RESTEasy とアプリケーション設定の必要な変更を設定した RESTEasy 2 をバンドルしました。詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 JBoss EAP 7 には RESTEasy 3 が含まれ、多くのクラスが非推奨になりました。Jackson のバージョンが 1.9.9 から 2.6.3 以上に変更されました。これらの変更の詳細は、本ガイドの以下の項を参照してください。 |
JBoss AOP |
JBoss AOP (アスペクト指向プログラミング) は JBoss EAP 6 では削除されました。JBoss AOP を使用するアプリケーションをリファクタリングする方法については、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 |
JGroups およびクラスタリング |
JBoss EAP 6 では、クラスタリングを有効にし、バインドアドレスを指定する方法が変更になりました。詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。
JBoss EAP 7 では、JGroups はデフォルトでパブリックではなくプライベートネットワークインターフェースを使用するようになり、さらに |
JNDI |
JBoss EAP 6 は新しい標準化されたグローバル JNDI ネームスペースを実装し、Java EE アプリケーションのさまざまなスコープへマップする関連するネームスペースを実装していました。新しい JNDI ネームスペースルールを使用するために必要なアプリケーションの変更については、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 |
JSF |
JBoss EAP 6 には JSF 2.0 が含まれ、アプリケーションを設定して旧バージョンを使用することができました。JBoss EAP 7 には JSF 2.2 が含まれ、旧バージョンを使用することができなくなりました。詳細は、本ガイドの以下の項を参照してください。 |
ロギング |
JBoss EAP 6 には、新しい JBoss Logging フレームワークが導入され、これは JBoss EAP 7 でも使用されています。サードパーティーロギングフレームワークを使用するアプリケーションは、モジュラークラスローディングの変更による影響を受ける場合があります。変更の詳細については、JBoss EAP 6『移行ガイド』の以下の項を参照してください。
JBoss EAP 7 では、 |
メッセージングおよび JMS |
JBoss EAP 6 では、デフォルトの JMS 実装として JBoss Messaging が HornetQ に置き換えられました。JBoss EAP 7 では、ビルトインメッセージングプロバイダーとして HornetQ が ActiveMQ Artemis に置き換えられました。 メッセージング設定を移行する場合、JBoss EAP 7 のデフォルトサーバー設定から始め、以下のガイドを使用して現在のメッセージング設定の変更を適用することが推奨されます。
JBoss Messaging から HornetQ に移行するために必要な変更を理解するには、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 その後、HornetQ 設定と関連するメッセージングデータの移行方法に関し、本ガイドの以下の情報を確認します。 |
ORB |
JBoss EAP 6 では、JacORB 設定は ORB 設定を移行する場合、JBoss EAP 7 のデフォルトサーバー設定から始め、JBoss EAP 7.1 設定ガイド の以下の項を参照して現在の ORB 設定の変更を適用することが推奨されます。 |
リモート呼び出し |
JBoss EAP 6 では、リモート呼び出しのために新しい EJB クライアント API が導入されましたが、新しい API を使用するためにアプリケーションコードを書き直したくない場合は、既存のコードを編集して EJB へのリモートアクセスに JBoss EAP 7 では、デフォルトのコネクターとデフォルトのリモート接続ポートが変更になりました。詳細は、本ガイドの以下の項を参照してください。 |
Seam 2.x |
JBoss EAP 6 では、Seam 2.2 アプリケーションの正式サポートがなくなりましたが、JSF 1.2 と Hibernate 3 の依存関係を設定して Seam 2.2 アプリケーションを実行することが可能でした。JSF 2.2 と Hibernate 5 が含まれる JBoss EAP 7 では、Red Hat JBoss Web Framework Kit のライフサイクル終了に伴い Seam 2.2 または Seam 2.3 はサポートされません。Weld CDI bean を使用して Seam コンポーネントを書き直すことが推奨されます。 |
セキュリティー |
JBoss EAP 6 のセキュリティー更新には、セキュリティードメイン名の変更および Basic 認証のセキュリティー設定方法の変更が含まれていました。LDAP セキュリティーレルム設定はサーバー設定ファイルに移されました。詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 JBoss EAP 7 のセキュリティーに影響する更新には、サーバー設定の変更やアプリケーションの変更が含まれます。詳細は、本ガイドの以下の項を参照してください。 |
Spring アプリケーション |
Spring 4.2.x は、JBoss EAP 7 によってサポートされる最も初期の安定したバージョンです。Apache CXF Spring web サービスおよび Spring と RESTEasy の統合の変更に関する詳細は、本ガイドの以下の項を参照してください。 |
トランザクション |
JBoss EAP 6 では、トランザクション設定が集約され、サーバー設定ファイルに移されました。その他の更新には、JTA ノード識別子の設定や JTS の有効方法の変更が含まれます。詳細は、JBoss EAP『移行ガイド』の以下の項を参照してください。
JBoss EAP 6 の |
バルブ |
JBoss EAP 7 では JBoss Web が Undertow に置き換えられ、バルブはサポート対象外となりました。本ガイドの以下の項を参照してください。 |
Web サービス |
JBoss EAP 6 には JBossWS 4 が含まれていました。バージョン更新に必要な変更に関する詳細は、JBoss EAP 6『移行ガイド』の以下の項を参照してください。 JBoss EAP 7 には JBossWS 5 が導入されました。必要な更新については、本ガイドの以下の項を参照してください。 |