2.1. TERASOLUNA Global Frameworkのスタック¶
目次
2.1.1. TERASOLUNA Global FrameworkのSoftware Framework概要¶
TERASOLUNA Global Frameworkで使用するSoftware Frameworkは独自のフレームワークではなく、Spring Frameworkを中心としたOSSの組み合わせである。
2.1.2. Software Frameworkの主な構成要素¶
TERASOLUNA Global Frameworkを構成するライブラリを以下に示す。
2.1.2.3. O/R Mapper¶
本ガイドラインでは、以下のどちらかを想定している。
- JPA2.0
- プロバイダは、Hibernate 4.2を使用する。
- MyBatis 2.3.5
- ラッパーとして、TERASOLUNA FrameworkのDAO(TERASOLUNA DAO)を使用する。
Note
MyBatisは正確には「SQL Mapper」であるが、本ガイドラインでは「O/R Mapper」に分類する。
Warning
どんなプロジェクトでもJPAを採用できるわけではない。”テーブルがほとんど正規化されいない”、”テーブルのカラム数が多すぎる”というテーブル設計がされている場合に、JPAの利用は難しい。
また、本ガイドラインではJPAの基本的な説明は行っておらず、JPA利用経験者がチーム内にいることが前提である。
2.1.2.6. バリデーション¶
- 単項目チェックにはBeanValidation 1.0を利用する。
- 実装は、Hibernate Validator 4.3を利用する。
- 相関チェックにはBeanValidation、もしくはSpring Validationを利用する。
- 使い分けについては入力チェックを参照されたい。
2.1.3. 利用するOSSのバージョン¶
version 1.0.6.RELEASEで利用するOSSの一覧を以下に示す。
Type | GroupId | ArtifactId | Version | Remarks |
---|---|---|---|---|
Spring | org.springframework | spring-aop | 3.2.18.RELEASE | |
Spring | org.springframework | spring-aspects | 3.2.18.RELEASE | |
Spring | org.springframework | spring-beans | 3.2.18.RELEASE | |
Spring | org.springframework | spring-context | 3.2.18.RELEASE | |
Spring | org.springframework | spring-context-support | 3.2.18.RELEASE | |
Spring | org.springframework | spring-core | 3.2.18.RELEASE | |
Spring | org.springframework | spring-expression | 3.2.18.RELEASE | |
Spring | org.springframework | spring-jdbc | 3.2.18.RELEASE | |
Spring | org.springframework | spring-orm | 3.2.18.RELEASE | |
Spring | org.springframework | spring-tx | 3.2.18.RELEASE | |
Spring | org.springframework | spring-web | 3.2.18.RELEASE | |
Spring | org.springframework | spring-webmvc | 3.2.18.RELEASE | |
Spring | org.springframework.data | spring-data-commons | 1.6.4.RELEASE | |
Spring | org.springframework.security | spring-security-acl | 3.1.4.RELEASE | |
Spring | org.springframework.security | spring-security-config | 3.1.4.RELEASE | |
Spring | org.springframework.security | spring-security-core | 3.1.4.RELEASE | |
Spring | org.springframework.security | spring-security-taglibs | 3.1.4.RELEASE | |
Spring | org.springframework.security | spring-security-web | 3.1.4.RELEASE | |
JPA(Hibernate) | antlr | antlr | 2.7.7 | *1 |
JPA(Hibernate) | dom4j | dom4j | 1.6.1 | *1 |
JPA(Hibernate) | org.hibernate | hibernate-core | 4.2.3.Final | *1 |
JPA(Hibernate) | org.hibernate | hibernate-entitymanager | 4.2.3.Final | *1 |
JPA(Hibernate) | org.hibernate.common | hibernate-commons-annotations | 4.0.2.Final | *1 |
JPA(Hibernate) | org.hibernate.javax.persistence | hibernate-jpa-2.0-api | 1.0.1.Final | *1 |
JPA(Hibernate) | org.javassist | javassist | 3.15.0-GA | *1 |
JPA(Hibernate) | org.jboss.spec.javax.transaction | jboss-transaction-api_1.1_spec | 1.0.1.Final | *1 |
JPA(Hibernate) | org.springframework.data | spring-data-jpa | 1.4.3.RELEASE | *1 |
MyBatis2 | jp.terasoluna.fw | terasoluna-dao | 2.0.5.0 | *2 |
MyBatis2 | jp.terasoluna.fw | terasoluna-ibatis | 2.0.5.0 | *2 |
MyBatis2 | org.mybatis | mybatis | 2.3.5 | *2 |
DI | javax.inject | javax.inject | 1 | |
AOP | aopalliance | aopalliance | 1 | |
AOP | org.aspectj | aspectjrt | 1.7.4 | |
AOP | org.aspectj | aspectjweaver | 1.7.4 | |
ログ出力 | ch.qos.logback | logback-classic | 1.0.13 | |
ログ出力 | ch.qos.logback | logback-core | 1.0.13 | |
ログ出力 | org.lazyluke | log4jdbc-remix | 0.2.7 | |
ログ出力 | org.slf4j | jcl-over-slf4j | 1.7.5 | |
ログ出力 | org.slf4j | slf4j-api | 1.7.5 | |
JSON | org.codehaus.jackson | jackson-core-asl | 1.9.7 | |
JSON | org.codehaus.jackson | jackson-mapper-asl | 1.9.7 | |
入力チェック | javax.validation | validation-api | 1.0.0.GA | |
入力チェック | org.hibernate | hibernate-validator | 4.3.1.Final | |
入力チェック | org.jboss.logging | jboss-logging | 3.1.0.GA | |
Bean変換 | commons-beanutils | commons-beanutils | 1.8.3 | *3 |
Bean変換 | net.sf.dozer | dozer | 5.4.0 | *3 |
Bean変換 | org.apache.commons | commons-lang3 | 3.1 | *3 |
日付操作 | joda-time | joda-time | 2.2 | |
日付操作 | joda-time | joda-time-jsptags | 1.1.1 | *3 |
日付操作 | org.jadira.usertype | usertype.core | 3.0.0.GA | *1 |
日付操作 | org.jadira.usertype | usertype.spi | 3.0.0.GA | *1 |
コネクションプール | commons-dbcp | commons-dbcp | 1.2.2.patch_DBCP264_DBCP372 | *3 |
コネクションプール | commons-pool | commons-pool | 1.6 | *3 |
Tiles | commons-digester | commons-digester | 2 | *3 |
Tiles | org.apache.tiles | tiles-api | 2.2.2 | *3 |
Tiles | org.apache.tiles | tiles-core | 2.2.2 | *3 |
Tiles | org.apache.tiles | tiles-jsp | 2.2.2 | *3 |
Tiles | org.apache.tiles | tiles-servlet | 2.2.2 | *3 |
Tiles | org.apache.tiles | tiles-template | 2.2.2 | *3 |
ユーティリティ | com.google.guava | guava | 13.0.1 | |
ユーティリティ | commons-collections | commons-collections | 3.2.2 | *3 |
ユーティリティ | commons-io | commons-io | 2.4 | *3 |
サーブレット | javax.servlet | jstl | 1.2 |
- データアクセスに、JPAを使用する場合に依存するライブラリ
- データアクセスに、MyBatis2を使用する場合に依存するライブラリ
- 共通ライブラリに依存しないが、TERASOLUNA Global Frameworkでアプリケーションを開発する場合に、利用することを推奨しているライブラリ
2.1.4. 共通ライブラリの構成要素¶
共通ライブラリは、TERASOLUNA Global Frameworkが含むSpring Ecosystem や、その他依存ライブラリでは足りない+αな機能を提供するライブラリである。 基本的には、このライブラリがなくてもTERASOLUNA Global Frameworkによるアプリケーション開発は可能であるが、”あると便利”な存在である。
項番 | プロジェクト名 | 概要 | Javaソースコード有無 |
---|---|---|---|
(1)
|
terasoluna-gfw-common
|
Webに限らず、汎用的に使用できる機能
|
有
|
(2)
|
terasoluna-gfw-web
|
Webアプリケーションを作成する場合に使用する機能群
|
有
|
(3)
|
terasoluna-gfw-jpa
|
JPAを使用する場合の、依存関係定義
|
無
|
(4)
|
terasoluna-gfw-mybatis2
|
MyBatis2を使用する場合の、依存関係定義
|
無
|
(5)
|
terasoluna-gfw-security-core
|
Spring Securityを使用する場合の、依存関係定義(Web以外)
|
無
|
(6)
|
terasoluna-gfw-security-web
|
Spring Securityを使用する場合の依存関係定義(Web関連)、およびSpring Securityの拡張
|
有
|
Javaソースコードを含まないものは、ライブラリの依存関係のみ定義しているプロジェクトである。
2.1.4.1. terasoluna-gfw-common¶
terasoluna-gfw-commonは以下の部品を提供している。
分類 | 部品名 | 説明 |
---|---|---|
例外ハンドリング | 例外クラス | 汎用的に使用できる例外クラスを提供する。 |
例外ロガー | プリケーション内で発生した例外をログに出力するためのロガークラスを提供する。 | |
例外コード | 例外クラスに対応する例外コード(メッセージID)を解決するための仕組み(クラス)を提供する。 | |
例外ログ出力インターセプタ | ドメイン層で発生した例外をログ出力するためのインターセプタクラス(AOP)を提供する。 | |
システム時刻 | システム時刻ファクトリ | システム時刻を取得するためのクラスを提供する。 |
コードリスト | コードリスト | コードリストを生成するためのクラスを提供する。 |
データベースアクセス(共通編) | クエリエスケープ | SQL及びJPQLにバインドする値のエスケープ処理を行うクラスを提供する。 |
シーケンサ | シーケンス値を取得するためのクラスを提供する。 |
2.1.4.2. terasoluna-gfw-web¶
terasoluna-gfw-webは以下の部品を提供している。
分類 | 部品名 | 説明 |
---|---|---|
二重送信防止 | トランザクショントークンチェック | リクエストの二重送信からWebアプリケーションを守るための仕組み(クラス)を提供する。 |
例外ハンドリング | 例外ハンドラ | 共通ライブラリが提供する例外ハンドリングの部品と連携するための例外ハンドラクラス(Spring MVC提供のクラスのサブクラス)を提供する。 |
例外ログ出力インターセプタ | Spring MVCの例外ハンドラがハンドリングした例外をログ出力するためのインターセプタクラス(AOP)を提供する。 | |
コードリスト | コードリスト埋込インターセプタ | Viewからコードリストを取得できるようにするために、コードリストの情報をリクエストスコープに格納するためのインターセプタクラス(Spring MVC Interceptor)を提供する。 |
ファイルダウンロード | 汎用ダウンロードView | ストリームから取得したデータを、ダウンロード用のストリームに出力するための抽象クラスを提供する。 |
ロギング | トラッキングID格納用サーブレットフィルタ | トレーサビリティを向上させるために、 クライアントから指定されたトラッキングIDを、ロガーのMDC(Mapped Diagnostic Context)、リクエストスコープ、レスポンスヘッダに設定するためのサーブレットフィルタクラスを提供する。 (クライアントからトラッキングIDの指定がない場合は、本クラスでトラッキングIDを生成する) |
汎用MDC格納用サーブレットフィルタ | ロガーのMDCに任意の値を設定するための抽象クラスを提供する。 | |
MDCクリア用サーブレットフィルタ | ロガーのMDCに格納されている情報をクリアするためのサーブレットフィルタクラスを提供する。 | |
ページネーション | ページネーションリンク表示用のJSPタグ | Spring Data Commons提供のクラスと連携してページネーションリンクを表示するためのJSPタグライブラリを提供する。 |
メッセージ管理 | 結果メッセージ表示用のJSPタグ | 処理結果を表示するためのJSPタグライブラリを提供する。 |
EL Functions | XSS対策用EL関数 | XSS対策用のEL関数を提供する。 |
URL用EL関数 | URLエンコーディングなどのURL用のEL関数を提供する。 | |
DOM変換用EL関数 | DOM文字列に変換するためのEL関数を提供する。 | |
ユーティリティEL関数 | 汎用的なユーティリティ処理を行うためのEL関数を提供する。 |
2.1.4.3. terasoluna-gfw-security-web¶
terasoluna-gfw-security-webは以下の部品を提供している。
分類 | 部品名 | 説明 |
---|---|---|
ロギング | 認証ユーザ名格納用サーブレットフィルタ | トレーサビリティを向上させるために、 認証ユーザ名をロガーのMDCに設定するためのサーブレットフィルタクラスを提供する。 |
認証 | リダイレクト先の指定が可能な認証成功ハンドラ | 認証が成功した際に、Webアプリケーション内の任意のパスにリダイレクトするためのハンドラクラスを提供する。 |
CSRF対策 | CSRF(Cross site request forgeries)チェック | CSRFを使用した攻撃からWebアプリケーションを守るための仕組み(クラス)を提供する。 (Spring Security 3.2を導入するまでの暫定措置) |