<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

	<display-name>TERASOLUNA Server Framework for Java（Rich版） 機能網羅サンプルプロジェクト</display-name>
	<description>TERASOLUNA Server Framework for Java（Rich版） 機能網羅サンプルプロジェクト</description>

	<!--
	  - ルートアプリケーションコンテキストを定義するXMLファイルの場所
	  - ContextLoaderServlet　で用いられる。
	  -
	  - 単数DBの場合は、"/WEB-INF/dataAccessContext-local.xml" を含め、
	  - 複数DBの場合は、 "/WEB-INF/dataAccessContext-jta.xml" を含める。
	  -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/dataAccessContext-local.xml /WEB-INF/applicationContext.xml /WEB-INF/functionsample-bussinessLogic.xml
		</param-value>
		<!--
		<param-value>
			/WEB-INF/dataAccessContext-jta.xml  /WEB-INF/applicationContext.xml
		</param-value>
		-->
	</context-param>

	<!--
	  コンテキストパラメータ"log4jConfigLocation"で指定されたロケーションの
	  Log4j設定ファイルを読み込むリスナ。
	  Log4jConfigListenerの初期化が完了した時点で上記設定ファイルが有効となる。
	-->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<!-- Log4j設定ファイルのロケーション -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:log4j.properties</param-value>
	</context-param>

	<context-param>
    	<param-name>log4jExposeWebAppRoot</param-name>
    	<param-value>false</param-value>
	</context-param>

    <!-- Content-Typeサイズ制限(commons-fileupload脆弱性回避用) -->
    <filter>
      <filter-name>contentTypeLengthLimitFilter</filter-name>
      <filter-class>jp.terasoluna.fw.web.common.filter.ContentTypeLengthLimitFilter</filter-class>
      <!--
      <init-param>
        <param-name>limitBytes</param-name>
        <param-value>2048</param-value>
      </init-param>
      -->
    </filter>

	<!-- フィルタの設定 -->
	<!-- 禁止URLの設定 -->
	<filter>
      <filter-name>forbiddenURIFilter</filter-name>
      <filter-class>jp.terasoluna.fw.web.rich.ForbiddenURIFilter</filter-class>
    </filter>
    <!-- コンテキスト生成クラスの設定 -->
    <!-- TERASOLUNAリッチクライアント版のハンドラマッピングを使用するときは必須となる。 -->
	<filter>
      <filter-name>requestContextHandlingFilter</filter-name>
      <filter-class>jp.terasoluna.fw.web.rich.RequestContextHandlingFilter</filter-class>
    </filter>

    <!-- UC106 例外処理用フィルター定義-->
	<filter>
      <filter-name>ExceptionHandlerFilter</filter-name>
      <filter-class>jp.terasoluna.rich.functionsample.common.ExceptionHandlerFilter</filter-class>
    </filter>

 
    <filter-mapping>
      <filter-name>contentTypeLengthLimitFilter</filter-name>
      <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>forbiddenURIFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>requestContextHandlingFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>ExceptionHandlerFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

	<!--
	  - 起動時にこのWEBアプリのルートアプリケーションコンテキストを読み込むローダ
	  - (デフェルトでは、"/WEB-INF/applicationContext.xml"から読み込む)
		- Servlet2.4の初期化順序に従わないJ2EEサーバの場合、
		- SpringのContextLoaderServletを利用する必要であるので注意すること。
		-
	  - WebApplicationContextUtils.getWebApplicationContext(servletContext)を使用して、
	  - ウェブアプリケーション内のどこからでも(フレームワークの外側でも)、
	  - アプリケーションコンテキストにアクセスすることが出来る。
	  -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!--
	  - リッチ版TERASOLUNAでリクエスト処理を行うSpring Web MVC Servletの設定。
	  - WebアプリケーションごとにApplication contextを保持する。
	  - デフォルトで"{servlet-name}-servlet.xml"という名前の設定ファイルが使用される。
	  - このファイルでは"functionsample-servlet.xml"という名前の設定ファイルになる。
	  -->
	<servlet>
	  <servlet-name>functionsample</servlet-name>
	  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	  <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/functionsample-Controller.xml,/WEB-INF/functionsample-servlet.xml</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
	</servlet>

	<!-- リッチクライアント版TERASOLUNAのServletを使用するリクエストのURLパターン -->
	<servlet-mapping>
		<servlet-name>functionsample</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<mime-mapping>
		<extension>xml</extension>
		<mime-type>text/xml;charset=UTF-8</mime-type>
	</mime-mapping>


    <!-- デフォルトページ -->
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
    </welcome-file-list>

	<!-- WebSphere用の例外ハンドリングに使う -->
    <error-page>
      <exception-type>jp.terasoluna.rich.functionsample.common.exception.ViewException</exception-type>
      <location>/error/error.xml</location>
    </error-page>

    <!-- 禁止URLにアクセスされたときの処理 -->
    <error-page>
      <exception-type>jp.terasoluna.fw.web.rich.exception.ForbiddenURIException</exception-type>
      <location>/secure/exception.do</location>
    </error-page>

    <!-- UC103,UC111 ファイルダウンロード処理 ファイルがない時の処理 -->
    <error-page>
      <exception-type>java.io.FileNotFoundException</exception-type>
      <location>/error/fileNotFoundException.xml</location>
    </error-page>

    <!-- UC106 例外処理 リクエストヘッダに特定値がある時の処理 -->
    <error-page>
      <exception-type>jp.terasoluna.rich.functionsample.common.exception.IllegalAccessAuthorityException</exception-type>
      <location>/error/illegalAccessAuthorityException.xml</location>
    </error-page>

    <!-- UC106 例外処理 ビューから例外が発生した場合の処理
     (ここに設定されている例外はビューからのみ発生される例外ではありません。) -->
    <error-page>
      <exception-type>org.springframework.web.util.NestedServletException</exception-type>
      <location>/error/nestedServletException.xml</location>
    </error-page>

    <!-- メッセージが見つからない場合のエラー -->
    <error-page>
      <exception-type>org.springframework.context.NoSuchMessageException</exception-type>
      <location>/error/noSuchMessageError.xml</location>
    </error-page>

    <!-- エラー時に表示するリソース -->
    <error-page>
      <exception-type>java.lang.Exception</exception-type>
      <location>/error/error.xml</location>
    </error-page>
</web-app>