<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
	xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<!-- Copyright (c) 2011 dsntech All rights reserved. date : 2011.07.18 author : so,byonggyu -->
	<display-name>ITCMS Workbench</display-name>
	<description>ITCMS Workbench powered by dsntech Server Bridge Framework</description>
	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	
    <servlet>
        <servlet-name>controller</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
	
    <!--
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    -->
	
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 서로 다른 서블릿(DispatcherServlet)이 공통빈을 사용하는 경우, ContextLoaderListener를 
		사용하여 공통으로 빈을 설정할 수 있다. ContextLoaderListener를 ServletListener로 등록하고, contextConfigLocation 
		컨텍스트 파라미터를 이용하여 공통으로 사용될 빈 정보를 담고있는 설정파일 목록을 지정하면 된다. -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:config/commonbeans/**/*.xml</param-value>
	</context-param>	
		
	<servlet>
		<servlet-name>JsonSPWebFrontServlet</servlet-name>
		<servlet-class>com.dsntech.serverplatform.channel.web.SPWebFrontServlet</servlet-class>
		<init-param>
			<param-name>RequestHandlerId</param-name>
			<param-value>sp.channel.IJsonRequestHandler</param-value>
		</init-param>
		<init-param>
			<param-name>ApplicationControllerId</param-name>
			<param-value>sp.channel.web.IWebApplicationController</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>JsonSPWebFrontServlet</servlet-name>
		<url-pattern>/json.cmd</url-pattern>
	</servlet-mapping>	
	
	<!-- SP 내부 파일업로드 요청 처리 -->
	<servlet>
		<servlet-name>SPFileUploadServlet</servlet-name>
		<servlet-class>com.dsntech.serverplatform.channel.web.SPWebFrontServlet</servlet-class>
		<init-param>
			<param-name>RequestHandlerId</param-name>
			<param-value>sp.channel.IFileUploadRequestHandler</param-value>
		</init-param>
		<init-param>
			<param-name>ApplicationControllerId</param-name>
			<param-value>sp.channel.web.IWebApplicationController</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>SPFileUploadServlet</servlet-name>
		<url-pattern>/uupload.cmd</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>JsonFrontServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.JsonFrontServlet</servlet-class>
		<!--init-param>
			<param-name>enablePooling</param-name>
			<param-value>false</param-value>
		</init-param-->
	</servlet>
	<servlet-mapping>
		<servlet-name>JsonFrontServlet</servlet-name>
		<url-pattern>/jjson.cmd</url-pattern>
	</servlet-mapping>

	<servlet>
		<servlet-name>WebFrontServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.WebFrontServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>WebFrontServlet</servlet-name>
		<url-pattern>/webjson.cmd</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>WebLoginServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.WebLoginServlet</servlet-class>	
	</servlet>
	<servlet-mapping>
		<servlet-name>WebLoginServlet</servlet-name>
		<url-pattern>/login.cmd</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>WebLogoutServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.WebLogoutServlet</servlet-class>	
	</servlet>
	<servlet-mapping>
		<servlet-name>WebLogoutServlet</servlet-name>
		<url-pattern>/logout.cmd</url-pattern>
	</servlet-mapping>
	
	<!-- SKT SBP 요청 처리 -->
	<servlet>
		<servlet-name>SbpServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.SbpServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>SbpServlet</servlet-name>
		<url-pattern>/sbp.cmd</url-pattern>
	</servlet-mapping>
	
	<!-- UTM 요청 처리 -->
	<servlet>
		<servlet-name>UtmServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.UtmServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>UtmServlet</servlet-name>
		<url-pattern>/utm.cmd</url-pattern>
	</servlet-mapping>
	
	<!-- 정책 캐쉬 요청 처리 -->
	<servlet>
		<servlet-name>PolicyCacheServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.PolicyCacheServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>PolicyCacheServlet</servlet-name>
		<url-pattern>/pc</url-pattern>
	</servlet-mapping>
	
	<!-- 메시지,취약성 캐쉬 요청 처리 -->
	<servlet>
		<servlet-name>MessageCacheServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.MessageCacheServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>MessageCacheServlet</servlet-name>
		<url-pattern>/mc</url-pattern>
	</servlet-mapping>
	
	<!-- 환경 캐쉬 요청 처리 -->
	<servlet>
		<servlet-name>ConfigCacheServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.ConfigCacheServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>ConfigCacheServlet</servlet-name>
		<url-pattern>/cc</url-pattern>
	</servlet-mapping>
	
	<!-- 통합 캐쉬 요청 처리 -->
	<servlet>
		<servlet-name>CacheServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.CacheServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>CacheServlet</servlet-name>
		<url-pattern>/c</url-pattern>
	</servlet-mapping>	
	
	<!-- Agetn 캐쉬 데이터 추가 -->
	<servlet>
		<servlet-name>CacheIntegrityServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.CacheIntegrityServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>CacheIntegrityServlet</servlet-name>
		<url-pattern>/ci</url-pattern>
	</servlet-mapping>

	<!-- web login 캐쉬 데이터 추가 -->
	<servlet>
		<servlet-name>LoginCacheIntegrityServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.LoginCacheIntegrityServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>LoginCacheIntegrityServlet</servlet-name>
		<url-pattern>/li</url-pattern>
	</servlet-mapping>
	
	<!-- 내부 파일업로드 요청 처리 -->
	<servlet>
		<servlet-name>FileUploadServlet</servlet-name>
		<!--servlet-class>com.yamaia.serverbridge.channel.web.SBWebFrontServlet</servlet-class-->
		<servlet-class>com.dsntech.itcms.core.comm.WebFrontServlet</servlet-class>
		<!-- init-param>
			<param-name>RequestHandlerId</param-name>
			<param-value>sb.channel.IFileUploadRequestHandler</param-value>
		</init-param>
		<init-param>
			<param-name>ApplicationControllerId</param-name>
			<param-value>sb.channel.web.IWebApplicationController</param-value>
		</init-param-->
	</servlet>
	<servlet-mapping>
		<servlet-name>FileUploadServlet</servlet-name>
		<url-pattern>/upload.cmd</url-pattern>
	</servlet-mapping>
	
	<!-- 암호화 파일 업로드 요청 처리 -->
	<servlet>
		<servlet-name>EncryptFileUploadServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.EncryptFileUploadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>EncryptFileUploadServlet</servlet-name>
		<url-pattern>/encfilupload.cmd</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>WebImageUploadServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.WebImageFileUploadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>WebImageUploadServlet</servlet-name>
		<url-pattern>/imageupload.cmd</url-pattern>
	</servlet-mapping>	
	
	<!-- 다운로드 요청 처리 -->
	<servlet>
		<servlet-name>WebDownloadServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.WebDownloadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>WebDownloadServlet</servlet-name>
		<url-pattern>/download.cmd</url-pattern>
	</servlet-mapping>	
	
	<!-- 암호화 키 요청 처리 -->
	<servlet>
		<servlet-name>EncryptServlet</servlet-name>
		<servlet-class>com.dsntech.itcms.core.comm.EncryptServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>EncryptServlet</servlet-name>
		<url-pattern>/encrypt.cmd</url-pattern>
	</servlet-mapping>	
	
	<resource-ref>
		<res-ref-name>jdbc/ctlItcms</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
	<resource-ref>
		<res-ref-name>jdbc/mgtItcms</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
	<resource-ref>
		<res-ref-name>jdbc/agt0Itcms</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
	<resource-ref>
		<res-ref-name>jdbc/agt1Itcms</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
	
	<!-- javamelody monitoring -->
	<filter>
            <filter-name>monitoring</filter-name>
            <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
    </filter>
    <filter-mapping>
            <filter-name>monitoring</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
            <listener-class>net.bull.javamelody.SessionListener</listener-class>
    </listener>
    
    <!-- loging for javamelody monitoring -->
	<login-config>
		<auth-method>BASIC</auth-method>
		<realm-name>Monitoring</realm-name>
	</login-config>
	<security-role>
		<role-name>monitoring</role-name>
	</security-role>
	<!-- security-constraint>
		<web-resource-collection>
			<web-resource-name>Monitoring</web-resource-name>
			<url-pattern>/monitoring</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>monitoring</role-name>		
		</auth-constraint>
	</security-constraint-->
	<!-- %TOMCAT_HOME%/conf/tomcat-users.xml -->
	<!-- ============================================================================== -->
	<!--
	......
		<role rolename="monitoring"/>
	  	<user username="itcms" password="1q2w3e4r" roles="monitoring"/>
	......
	-->
	<!-- ============================================================================== -->
	
    <!-- WebSocket Examples -->
    <servlet>
      <servlet-name>wsEchoStream</servlet-name>
      <servlet-class>com.dsntech.itcms.core.comm.WebSocketStream</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>wsEchoStream</servlet-name>
      <url-pattern>/websocket/echoStream</url-pattern>
    </servlet-mapping>
    
    <servlet>
      <servlet-name>wsEchoMessage</servlet-name>
      <servlet-class>com.dsntech.itcms.core.comm.websocket.WebSocketMessage</servlet-class>
      <!-- Uncomment the following block to increase the default maximum
           WebSocket buffer size from 2MB to 20MB which is required for the
           Autobahn test suite to pass fully. -->
      <!--
      <init-param>
        <param-name>byteBufferMaxSize</param-name>
        <param-value>20971520</param-value>
      </init-param>
      <init-param>
        <param-name>charBufferMaxSize</param-name>
        <param-value>20971520</param-value>
      </init-param>
      -->
    </servlet>
    <servlet-mapping>
      <servlet-name>wsEchoMessage</servlet-name>
      <url-pattern>/wsm.cmd</url-pattern>
    </servlet-mapping>
	
	<error-page>
	    <error-code>400</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>401</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>403</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>404</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>405</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>500</error-code>
	    <location>/error.html</location>
	</error-page>
	<error-page>
	    <error-code>501</error-code>
	    <location>/error.html</location>
	</error-page>
	
	<security-constraint>
		<display-name>Example Security Constraint</display-name>
		<web-resource-collection>
			<web-resource-name>Protected Area</web-resource-name>
			<!-- Define the context-relative URL(s) to be protected -->
			<url-pattern>/*</url-pattern>
			<!-- If you list http methods, only those methods are protected-->
			<http-method>DELETE</http-method>
			<http-method>TRACE</http-method>
			<http-method>PUT</http-method>
		</web-resource-collection>
		<auth-constraint>
			<!-- Anyone with one of the listed roles may access this area -->
			<role-name></role-name>
		</auth-constraint>
	</security-constraint>	
	
</web-app>