 |

|
DIxAOPコンテナ「Seasar2とSpring」
|
第2回:Seasar2とSpringのインストール
著者:豆蔵 長谷川 裕一、竹端 進 2005/11/2
|
|
|
1 2 3 4 次のページ
|
 |
はじめに
|
前回、AADL1に準拠した「従業員管理Webアプリケーション」にインターフェースを導入しましたが、まだコンポーネント間が完全に疎結合になっていないため、Seasar2とSpringを導入して解決するというところまで話が進みました。
今回は問題の解決に先立ち、Seasar2とSpringの概要を解説し、皆さんのマシンにSeasar2とSpring、そしてサンプルアプリケーションである従業員管理システムを導入するところまでを解説します。
なお、本連載ではWebコンテナにTomcat、RDBMSにHSQLDB、IDE(統合開発環境)にはEclipseといった、ここ1〜2年のJ2EEを利用したWebアプリケーション開発の定番の組み合わせを開発環境として使用します(表1)。TomcatやEclipseなどの導入方法については様々な書籍やWebサイトが存在していますので本連載では記述しません。その点をご了承ください。
|
JDK |
J2SE 1.4.2 |
サーブレットコンテナ |
Tomcat 5.0.28 |
RDBMS |
HSQLDB 1.8 |
IDE(統合開発環境) |
Eclipse 3.0 |
Eclipseプラグイン |
Tomcat Plugin Spring IDE(Springの場合) Kijimuna(Seasar2の場合) |
表1:開発環境
|
Seasar2の概要
|
Seasar2はNPO(2005/10/14現在法人認可申請中)であるSeasarファウンデーションにより開発/管理されているJava/J2EEのフレームワークであり、ひがやすを氏がチーフコミッタ(開発者)を務めています。
本連載では最新版である2.2.10(2005/10/14現在)のバージョンをもとに説明を行いますが、コンポーネントの自動登録やアノテーションなどの拡張を加えた次期バージョン候補の2.3RC1も公開されています。
Seasar2は、DIxAOPコンテナの機能を実現するS2コアと呼ばれる部分に基本的な機能が実装されています。基本機能にはDIやAOPはもちろん、トランザクション制御、JDBC連携の機能などが含まれます。
S2プロダクトと呼ばれるプロジェクトでは、DIxAOPコンテナの機能を利用して、各種のフレームワーク(表2)と連携を行い、その利用方法を簡易化するための機能が提供されており、それぞれの分野で成長したSeasar2以外のフレームワークを開発者の状況に合わせて利用しやすくします(図1)。
|
プロダクト名 |
連携するフレームワーク |
備考 |
S2JSF |
JSF |
プレゼンテーション |
S2Struts |
Struts |
プレゼンテーション |
S2Tapestry |
Tapestry |
プレゼンテーション |
S2Flex |
Flex |
プレゼンテーション |
S2Hibernate |
Hibernate |
永続化 |
表2:フレームワーク連携を行うプロダクト例
|
Seasar2としてすべてのフレームワークを用意する必要がないことは、Seasar2がDIxAOPコンテナ本来の強化に努めることができる利点もあります。

図1:Seasar2の利用例 (画像をクリックすると別ウィンドウに拡大図を表示します)
また、Seasar2にはSandBoxと呼ばれる開発初期のプロダクトも多く存在します。開発に関与するコミッタの多寡や熱意により、作成されるプロダクトの品質や開発スピードに差は生じますが、おおむね活発な活動がなされています。最近では、".NET"や"PHP"用のDIxAOPコンテナ開発にも力を入れています(表3)。
|
適用範囲 |
プロダクト名 |
.NET |
S2Container.NET、S2Dao.NET |
PHP |
S2Container.PHP5、S2Dao.PHP5 |
表3:.NET/PHPプロダクト
|
Seasar2のDI・AOP以外の機能
|
本連載を通してDIとAOPについては解説しますので、今回はSeasar2のDIとAOP以外の機能について、いくつか紹介します。
|
JSF連携(S2JSF)
|
JSFとの連携はS2JSFプロダクトにより実現されます。
S2JSFの大きな特徴は、ユーザとの画面定義を行う際によく利用されるHTMLで作成した画面のモックをJSFに変換することができることです。HTMLで作成した画面をJSFに変換するため、JSFを作成する時に必要だと考えられる特別なGUIエディタも必要がなく、画面はHTMLとして確認できるため、レイアウト確認のためにアプリケーションサーバを立ち上げるなどの手間をかける必要もありません。
またリクエストやセッションの属性はDIxAOPコンテナの機能を利用して必要なクラスのプロパティに自動的に設定されるため、通常であればJSFのAPIを利用しなければならないクラスを、JSFに依存しないPOJOとして作成することができます。
|
Struts連携(S2Struts)
|
Strutsとの連携はS2Strutsプロダクトにより実現されます。
StrutsのActionクラスにDIxAOPコンテナの機能を利用して次に呼び出すべきサービスコンポーネントを自動的に設定するため、Actionクラスは設定されたサービスコンポーネントを呼び出すだけになり、コントローラとしての役割が明確になります。また、Actionクラスに対してAOPを適用することも可能になります。
本連載のサンプルアプリケーション「従業員管理Webアプリケーション(Seasar2版)」ではStrutsをプレゼンテーションに使用しているため、S2Strutsを利用しています。
|
JDBC連携(S2JDBC)
|
JDBCとの連携はS2コアに含まれています。
JDBC連携用に用意されたコンポーネントに対してDIxAOPコンテナの機能を利用して、定義ファイルでSQL文("SELECT * FROM xxx"など)を設定し、実行することができます。
開発者は個別にJDBCアクセス用のコンポーネントを用意することなく、DBアクセスを実現します。
|
O/Rマッピング(S2Dao)
|
O/RマッピングはS2Daoプロダクトにより実現されます。
S2Daoで必要となるクラスはテーブルから取得した値を格納するJavaBeansとDAO(Data Access Object)、そして必須ではありませんがSQLが記述された外部ファイルです。
最近ではXMLを利用してオブジェクトとテーブルをマッピングするフレームワークが多いのですが、S2DaoはXMLを記述することなく、Beanにテーブルのカラムとのマッピングをメタデータとして記述することでSQL文を記述することなくO/Rマッピングが行えます。
Beanとは別に外部ファイル(SQLファイル)を作成することにより、DAOからSQL文を利用することも可能です。
本連載のサンプルアプリケーション「従業員管理Webアプリケーション(Seasar2版)」ではSeasar2のS2Daoを使用してRDBにアクセスしています。
|
Hibernate連携(S2Hibernate)
|
Hibernateとの連携はS2Hibernateプロダクトにより実現されます。
Seasar2のトランザクション管理機能とHibernateを連携させることで、Hibernateがテーブルにアクセスする際に必要とする煩雑な処理をソースコードに記述する必要がなくなり、また宣言的なトランザクション管理を利用することができます。これにより、コーディングの負担が軽減され開発効率があがります。
|
1 2 3 4 次のページ
|

|
|

|
著者プロフィール
株式会社豆蔵 長谷川 裕一
XMLの技術開発やCORBA、EJBを使用したシステム開発などを経て、現在はアジャイル開発プロセスの導入から工学的なソフトウエアプロセスの策定、オープンソースプロダクトに関するコンサルタント、アーキテクトとして常に第一線で活躍。共著として「プログラムの育てかた 現場で使えるリファクタリング(ソフトバンク)」、「Spring入門(技術評論社)」。
|

|
著者プロフィール
株式会社豆蔵 竹端 進
鉄鋼系SIerを経て現職に。現在はオープンソースプロダクトに関するコンサティング、開発支援、教育を行うチームに所属。日々、新たな技術をどのように生かしていくかを考える毎日。現在の注目対象はSeasar2とMaven。
|
|
|
|