JBoss SeamからJSF 2へ──Javaコンサルタントが語る、J2EEからJava EE 7への移行のポイント【前編】

Oracle Java & Developers編集部
2014-08-11 15:00:00
  • このエントリーをはてなブックマークに追加

J2EE時代のアプリケーション資産を抱える企業が、いよいよJava EE 7など最新のJava EE環境への移行を考えるべき時が来た。具体的にどう進めるべきか、日本オラクルのJavaコンサルタントが、その勘所を語る。

 Javaで業務システムを構築している企業が、J2EEやサードパーティのフレームワークで開発した旧式のアプリケーションを、Java EE 7など最新のJava EE環境に、いつ、どのようにして移行するかを検討すべき時期が来た。本企画では2回にわたり、日本オラクルのJavaコンサルタントが、J2EEからJava EEへの移行を検討する際の主なポイントを紹介していく。

 今回取り上げるテーマは「プレゼンテーション層の移行」だ。J2EEアプリケーションのプレゼンテーション層の開発を効率化する目的から、Strutsと並んで広く使われてきたフレームワークの1つに「JBoss Seam」がある。同フレームワークで作られたアプリケーションを、Java EE 7の標準プレゼンテーション・フレームワーク「JSF(JavaServer Faces) 2」に移行する際には、どのような点を考慮すべきなのだろうか。日本オラクル テクノロジーコンサルティング統括本部の武田圭司氏(シニアコンサルタント)が語る。

プレゼンテーション層の移行──JBoss Seam 2.2からJSF 2への移行

日本オラクル テクノロジーコンサルティング統括本部 シニアコンサルタントの武田圭司氏
日本オラクル テクノロジーコンサルティング統括本部 シニアコンサルタントの武田圭司氏

 日本オラクルでは、Javaを利用する企業に対して、さまざまなコンサルティング・サービスを提供しています。それらのサービスの中でも、最近ご相談が増えているのが「マイグレーション・サービス」です。これは、J2EEやオープンソース/商用のサードパーティ・フレームワークで構築した旧式のアプリケーションを、最新のJava EE環境に移行するプロジェクトをご支援するというものです(サービスの概要については、記事末尾の囲み記事をご覧ください)。

 本企画では、このマイグレーション・サービスの中で提供している知見やノウハウの一部をご紹介していきます。今回は、Java EEアプリケーションを構成する「プレゼンテーション層(Web層)」、「ビジネス層(ビジネス・ロジック層)」、「永続化層」のうち、プレゼンテーション層の移行における留意点や典型的な移行パターンを紹介します。

 ご存じのとおり、J2EEの時代には、プレゼンテーション層を担うサードパーティ・フレームワークとしてStrutsやJBoss Seamが広く使われていました。その時代に構築されたアプリケーションを更改する場合、プレゼンテーション層をJava EEのJSF 2で置き換えるのが、アプリケーションのライフサイクル・マネジメントの観点ではベストの選択肢となります。StrutsからJSF 2への移行ノウハウに関しては、すでにWebLogic Channelで楽天の岩崎浩文さんによる非常に有用な記事が公開されていますので、そちらをご覧いただくのがよいでしょう。ここでは、JBoss SeamからJSF 2への移行を検討する際のポイントを説明します。

【関連記事】

StrutsからJSF 2への移行ノウハウについては、こちらの記事を!

 JBoss Seamは、「EJBをフロントに近いところで使いたい」というニーズに応えるかたちで開発されたDI(Dependency Injection)フレームワークです。これを使用することにより、Java EE 5のJSF 1.2とEJB 3.0を独自のアノテーションによって結び付け、容易に連携させることが可能となります。現在も広く使われているJBoss Seam 2.2はJava EE 5をベースにしており、2010年にリリースされました。

 通常、アプリケーションを更改する場合は、同じフレームワークの最新バージョンを使うことで移行コストを最小化することができます。しかし、残念ながらバージョン2.2の次に登場したJBoss Seam 2.3や同3.0では、JBoss Seam 2.2との互換性が失われています。そのため、JBoss Seam 2.2で作られたアプリケーションを更改するタイミングで、Java EEの標準フレームワークであるJSFに移行したいというご相談をよくいただくのです。

JBoss Seam 2.2からJava EE 7への移行の肝は、EJBに混在した役割の分離

 それでは、JBoss Seam 2.2からJSF 2への移行では、具体的にどのような方法をとればよいのでしょうか。ここではJava EE 7に移行する場合を例にとります。

 下の図は、JBoss Seam 2.2アプリケーションの基本的な構成(基本パターン)を示したものです。

 JBoss Seam 2.2では、JSF 1.2のFaceletで作成した画面にEJB 3.0で開発した業務処理(ビジネス・ロジック)を直接バインドし、両者間のシームレスな連携を実現します。基本的に画面と業務処理の2階層構成をとるのが特徴であり、各画面と業務処理は1対1で対応します。

 また、実際にJBoss Seam 2.2を使って構築される典型的な業務アプリケーションでは、業務処理のフロントに画面入力の状態を保持するステートフルなEJBコンポーネントを追加し、個別の業務処理を呼び出す構成(典型的パターン)が採用されています。

 このパターンでは、業務処理をステートレスなEJBコンポーネントとして実装し、画面の状態から分離した構成をとります。

 以上がJBoss Seam 2.2を用いたアプリケーションによく見られる構成ですが、これらの構成は、EJBに「画面入力の対話状態の保持」と「業務トランザクションの管理」という2つの役割が混在してしまうという問題を抱えています。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]