SpringFramework に統合する場合、Integrating with other web framworks にある、Common Configuration に記載のある方法にのっとった設定を行う事を前提としています。
まずは以下のコマンドを入力してください。
もし「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):
3を入力して、cubby-spring-archetype (Cubby 2.0.1 Spring 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 spring-version: 2.5.6 groupId: com.example.foo artifactId: barapp version: 1.0-SNAPSHOT package: com.example.foo.barapp Y: :
いままで入力した内容の確認を求められます。問題がなければ Y を入力してください。プロジェクトの雛形が作成されます。
spring のバージョンなどの設定を変更する場合はここで N を選択して再度設定を入力してください。 再設定の際に全てのオプションが設定可能です。(プロジェクトのアーティファクト名、パッケージ名は再入力する必要があります。)\
ディレクトリに配備する必要があるファイルを説明します。 Maven2 を使わずにプロジェクトを作成するときも参考にしてください。
依存関係を参照してください。 WEB-INF/lib 以下に配備します。
主な依存ライブラリを以下にあげます。
cubby-*.jar | Cubby 本体 | 必須 |
cubby-spring-*.jar | Spring 統合 | 必須 |
cubby-unit-*.jar | 単体テストサポート | 任意 |
cubby-gson-*.jar | JSON サポート | 任意 |
spring-core-*.jar spring-beans-*.jar spring-context-*.jar spring-web-*.jar |
Spring | 必須 |
slf4j-api.jar | ログ出力 API | 必須 |
commons-fileupload-*.jar commons-io-*.jar |
ファイルアップロード機能 | 必須 |
Cubby | Spring |
2.0.0+ | 2.5.6+ |
Cubby はサーブレットフィルタとして動作します。 web.xml にサーブレットフィルタとフィルタマッピングを追加します。 登録する際は以下の順序で登録してください。
Spring の ApplicationContext設定ファイルのパスををコンテキストパラメータに指定します。
パスやファイル名はご利用のものを指定ください。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param>
上述の設定ファイルに基づいて ApplicationContext を初期化するサーブレットコンテキストリスナです。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
@Scope("request") や @Scope("session") を利用するためのサーブレットコンテキストリスナです。
<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
*.jsp ファイルなど、直接アクセスされたくないファイルへのアクセスを制御するフィルターです。
この例ではブラウザ等から *.jsp へアクセスがあった場合に NotFound (404) を返します。
<filter> <filter-name>senderror</filter-name> <filter-class>org.seasar.cubby.filter.SendErrorFilter</filter-class> <init-param> <param-name>statusCode</param-name> <param-value>404</param-value> </init-param> </filter>
<filter-mapping> <filter-name>senderror</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
リクエストのエンコーディングを設定するためのフィルタです。
<filter> <filter-name>encoding</filter-name> <filter-class>org.seasar.cubby.filter.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
<filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Cubby の主な処理を行うフィルタです。 リクエストの情報からアクションメソッドを起動します。 対象のアクションが見つからない場合は FilterChain で後続のフィルタに処理を移譲します。
また、処理の対象外とする URL を ignorePathPattern で指定できます。 イメージのフォルダなどはここで指定して処理対象外とすることでパフォーマンスの低下を防ぐことができます。 対象外にするパスを正規表現のカンマ区切りで指定してください。
<filter> <filter-name>cubby</filter-name> <filter-class>org.seasar.cubby.filter.CubbyFilter</filter-class> <init-param> <param-name>ignorePathPattern</param-name> <param-value>/css/.*,/js/.*,/img/.*</param-value> </init-param> </filter>
<filter-mapping> <filter-name>cubby</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
Cubby のプラグインの初期化を行うサーブレットです。
<servlet> <servlet-name>cubby</servlet-name> <servlet-class>org.seasar.cubby.servlet.CubbyServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
ファイル名はデプロイメント記述子で指定したものにして下さい。ここでは慣例にのっとって、applicationContext.xml としています。 このファイルでは以下の xml をインポートしてください。
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <import resource="classpath*:cubby.xml" /> <import resource="app-cubby.xml" /> </beans>
Cubby アプリケーション全体の設定です。 applicationContext.xml からインポートしてください。 現在は日付フォーマット、リクエストのパーサ、ファイルアップロード用の設定、メッセージの振る舞いを指定できます。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <import resource="classpath*:cubby-converters.xml" /> <!-- 日付フォーマットの設定 --> <bean id="defaultFormatPattern" class="org.seasar.cubby.controller.impl.DefaultFormatPattern"> <property name="datePattern"> <value>yyyy-MM-dd</value> </property> <property name="timePattern"> <value>HH:mm:ss</value> </property> <property name="timestampPattern"> <value>yyyy-MM-dd HH:mm:ss</value> </property> </bean> <!-- リクエストパーサー --> <bean id="multipartRequestParser" class="org.seasar.cubby.controller.impl.MultipartRequestParser" /> <bean id="defaultRequestParser" class="org.seasar.cubby.controller.impl.DefaultRequestParser" /> <util:list id="requestParsers"> <ref bean="multipartRequestParser" /> <ref bean="defaultRequestParser" /> </util:list> <!-- ファイルアップロードの設定 --> <bean id="servletFileUpload" class="org.apache.commons.fileupload.servlet.ServletFileUpload" scope="prototype"> <property name="fileItemFactory"> <bean id="diskItemFactory" class="org.apache.commons.fileupload.disk.DiskFileItemFactory"> <property name="sizeThreshold"> <value>4096</value> </property> </bean> </property> <property name="fileSizeMax"> <value>10000000</value> </property> </bean> <!-- メッセージの振る舞い --> <bean id="messagesBehavior" class="org.seasar.cubby.controller.impl.DefaultMessagesBehaviour"> <property name="baseName"> <value>messages</value> </property> </bean> </beans>
メッセージリソース用のプロパティファイル。 メッセージリソースを参照してください。