ICEfacesは、Ajaxに対応した、JavaによるWebアプリケーションフレームワークである。ICEfacesでは、Ajaxアプリケーションを容易に実現するために、プレゼンテーション層におけるさまざまなコンポーネントを提供している。

Ajaxの普及により、リッチでインタラクティブなユーザインタフェースが広く用いられ、画面遷移と非同期のリクエストもあたりまえのように用いられるようになってきた。しかしその結果、より多くのリクエストが送信され、より複雑な処理フローが要求されるようになってきている。プレゼンテーション層が充実することは必要不可欠であるが、ビジネス層以降がそれに対応しきれない場合、パフォーマンス上の問題や、セキュリティ上の問題を引き起こすことになる。たとえば、(従来のWebアプリケーションのように)ユーザの情報を何でもセッションオブジェクトに保持するような仕組みでは、その情報のライフサイクルの管理、アクセス制御などを間違いなく実施することは、ますます難しくなってきている。

この問題のひとつの解として、ICEfacesにおいては、Java EE上のフレームワークJBoss Seamとの連携をサポートしている。ICEfacesとJBoss Seamを連携させることにより、Ajaxに対応しながらも、プレゼンテーション層からデータ層までを網羅的に、そしてその上のコンポーネントを統一的に扱うことを可能としている。

本稿では、ICEfacesとJBoss Seamとの連携(ICEfaces×JBoss Seam)について、その動作概要と、具体的なアプリケーションの例を説明する。

※1 ICEfacesの基本的なアーキテクチャについては、「【ハウツー】JavaScriptの記述が不要! Java開発者向け本格的AjaxフレームワークICEfaces」を参考にしてほしい。

※2 本稿執筆時の公式リリース(Certified Release)の最新バージョンは1.6.2であるが、本稿では1.6.1を対象とする(最新版のバイナリは、商用サポートの対象者か、コミュニティのコントリビュータのみが利用可能であるため)。なお、ソースコードについては、最新版の1.6.1を、SVNのリポジトリからダウンロード可能である。