~~ ~~ Copyright 2004-2010 the Seasar Foundation and the Others. ~~ ~~ Licensed under the Apache License, Version 2.0 (the "License"); ~~ you may not use this file except in compliance with the License. ~~ You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.0 ~~ ~~ Unless required by applicable law or agreed to in writing, software ~~ distributed under the License is distributed on an "AS IS" BASIS, ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, ~~ either express or implied. See the License for the specific language ~~ governing permissions and limitations under the License. ~~ -------- Guice 統合 -------- baba -------- 2010-02-25 -------- {目次} *{{{#前提}前提}} *{{{#プロジェクトの作成}プロジェクトの作成}} *{{{#Maven2_によるプロジェクトの雛形作成}Maven2 によるプロジェクトの雛形作成}} *{{{#各種ファイル}各種ファイル}} *{{{#必要なライブラリ_WEB-INFlib}必要なライブラリ (WEB-INF/lib)}} *{{{#デプロイメント記述子_WEB-INFweb.xml}デプロイメント記述子 (WEB-INF/web.xml)}} *{{{#プロパティファイル_WEB-INFclasses}プロパティファイル (WEB-INF/classes)}} {前提} Guice と統合する場合、guice-servlet-*.jar が依存ライブラリになりますが、これはセントラルリポジトリにアップロードされていないので、ローカルリポジトリなどに登録しておいてください。 [] {プロジェクトの作成} *{Maven2 によるプロジェクトの雛形作成} まずは以下のコマンドを入力してください。\ もし「BUILD FAILURE」と表示されエラーになった場合は、maven-archetype-plugin が古い可能性があります。 その場合「M2_REPO/org/apache/maven/plugins/maven-archetype-plugin/」をディレクトリごと削除して再実行することで、 最新のmaven-archetype-pluginを使用して実行することができます。(M2_REPOはMavenのローカルリポジトリ) +------------------------------------------------------+ mvn archetype:generate -DarchetypeCatalog=http://cubby.seasar.org/ +------------------------------------------------------+ コマンド入力後、いくつかの質問に回答していきます。 +------------------------------------------------------+ Choose archetype: 1: remote -> cubby-s2-archetype (Cubby 2.0.1 Seasar2 Integration) 2: remote -> cubby-guice-archetype (Cubby 2.0.1 Guice Integration) 3: remote -> cubby-spring-archetype (Cubby 2.0.1 Spring Integration) 4: remote -> cubby-archetype (Cubby 1.1.7) Choose a number: (1/2/3/4): +------------------------------------------------------+ 2を入力して、cubby-guice-archetype (Cubby 2.0.1 Guice Integration) を選んでください。 +------------------------------------------------------+ Define value for groupId: : +------------------------------------------------------+ 作成するプロジェクトのグループIDを入力してください。 例 : com.example.foo +------------------------------------------------------+ Define value for artifactId: : +------------------------------------------------------+ 作成するプロジェクトのアーティファクトIDを入力してください。 例 : barapp +------------------------------------------------------+ Define value for version: : +------------------------------------------------------+ 作成するプロジェクトのバージョンを入力してください。 例 : 1.0-SNAPSHOT +------------------------------------------------------+ Define value for package: : +------------------------------------------------------+ 作成するプロジェクトのパッケージを入力してください。 例 : com.example.foo.barapp +------------------------------------------------------+ Confirm properties configuration: cubby-version: 2.0.1 guice-version: 2.0 groupId: com.example.foo artifactId: barapp version: 1.0-SNAPSHOT package: com.example.foo.barapp Y: : +------------------------------------------------------+ いままで入力した内容の確認を求められます。問題がなければ Y を入力してください。プロジェクトの雛形が作成されます。\ guice のバージョンなどの設定を変更する場合はここで N を選択して再度設定を入力してください。 再設定の際に全てのオプションが設定可能です。(プロジェクトのアーティファクト名、パッケージ名は再入力する必要があります。)\ {各種ファイル} ディレクトリに配備する必要があるファイルを説明します。 Maven2 を使わずにプロジェクトを作成するときも参考にしてください。 *{必要なライブラリ (WEB-INF/lib)} {{{cubby-guice/dependencies.html}依存関係}}を参照してください。 WEB-INF/lib 以下に配備します。 主な依存ライブラリを以下にあげます。 *--------------------------*--------------------------*------* | cubby-*.jar | Cubby 本体 | 必須 | *--------------------------*--------------------------*------* | cubby-guice-*.jar | Guice 統合 | 必須 | *--------------------------*--------------------------*------* | cubby-unit-*.jar | 単体テストサポート | 任意 | *--------------------------*--------------------------*------* | cubby-gson-*.jar | JSON サポート | 任意 | *--------------------------*--------------------------*------* | guice-*.jar | Guice | 必須 | | guice-servlet-*.jar | | | *--------------------------*--------------------------*------* | slf4j-api.jar | ログ出力 | 必須 | *--------------------------*--------------------------*------* | commons-fileupload-*.jar | ファイルアップロード機能 | 必須 | | commons-io-*.jar | | | *--------------------------*--------------------------*------* 主な依存ライブラリ *-----------*-------------* | Cubby | Guice | *-----------*-------------* | 2.0.0+ | 2.0+ | *-----------*-------------* Cubby と Guice のバージョンの推奨の組み合わせ *{デプロイメント記述子 (WEB-INF/web.xml)} Cubby はサーブレットフィルタとして動作します。 web.xml にサーブレットフィルタとフィルタマッピングを追加します。 登録する際は以下の順序で登録してください。 [[1]]CubbyGuiceServletContextListener (任意) サーブレットコンテキストの初期化時に Guice の Module をインスタンス化するサーブレットコンテキストリスナです。 コンテキストパラメータ cubby.guice.module にインスタンス化するモジュールのクラス名を指定してください。 +------------------------------------------------------+ cubby.guice.module com.example.foo.barapp.ApplicationModule +------------------------------------------------------+ +------------------------------------------------------+ org.seasar.cubby.plugins.guice.CubbyGuiceServletContextListener +------------------------------------------------------+ [[2]]{{{cubby/apidocs/org/seasar/cubby/filter/SendErrorFilter}SendErrorFilter}} (任意) \*.jsp ファイルなど、直接アクセスされたくないファイルへのアクセスを制御するフィルターです。\ この例ではブラウザ等から *.jsp へアクセスがあった場合に NotFound (404) を返します。 +------------------------------------------------------+ senderror org.seasar.cubby.filter.SendErrorFilter statusCode 404 +------------------------------------------------------+ +------------------------------------------------------+ senderror *.jsp REQUEST +------------------------------------------------------+ [[3]]{{{cubby/apidocs/org/seasar/cubby/filter/EncodingFilter}EncodingFilter}} (任意) リクエストのエンコーディングを設定するためのフィルタです。 +------------------------------------------------------+ encoding org.seasar.cubby.filter.EncodingFilter encoding UTF-8 +------------------------------------------------------+ +------------------------------------------------------+ encoding /* +------------------------------------------------------+ [[4]]GuiceFilter @RequestScoped や @SessionScoped を使用するために定義します。 +------------------------------------------------------+ guice com.google.inject.servlet.GuiceFilter +------------------------------------------------------+ +------------------------------------------------------+ guice /* +------------------------------------------------------+ [[5]]{{{cubby/apidocs/org/seasar/cubby/filter/CubbyFilter}CubbyFilter}} (必須) Cubby の主な処理を行うフィルタです。 リクエストの情報からアクションメソッドを起動します。 対象のアクションが見つからない場合は FilterChain で後続のフィルタに処理を移譲します。 また、処理の対象外とする URL を ignorePathPattern で指定できます。 イメージのフォルダなどはここで指定して処理対象外とすることでパフォーマンスの低下を防ぐことができます。 対象外にするパスを正規表現のカンマ区切りで指定してください。 +------------------------------------------------------+ cubby org.seasar.cubby.filter.CubbyFilter ignorePathPattern /css/.*,/js/.*,/img/.* +------------------------------------------------------+ +------------------------------------------------------+ cubby /* REQUEST FORWARD INCLUDE +------------------------------------------------------+ [[6]]{{{cubby/apidocs/org/seasar/cubby/servlet/CubbyServlet}CubbyServlet}} (必須) Cubby のプラグインの初期化を行うサーブレットです。 +------------------------------------------------------+ cubby org.seasar.cubby.servlet.CubbyServlet 2 +------------------------------------------------------+ *{プロパティファイル (WEB-INF/classes)} [[1]]messages_ja.properties (messages_en.properties) メッセージリソース用のプロパティファイル。 {{{messages.html}メッセージリソース}}を参照してください。