<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Servlet 2.3 is required -->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>Clearspace Community</display-name>
    <description>Team collaboration application by Jive Software (jivesoftware.com)</description>
    <!--
        Uncomment the following context-param section to specify your
        jiveHome location in this file. Setting the value here will override
        the value in jive_init.xml.

        There are other ways to set the jiveHome value:
            1) Add a jive_init.xml file to your classpath, which points
               to jiveHome. Normally, this file will be in WEB-INF/classes.
            2) Set the JNDI value "java:comp/env/jiveHome" with a String
               that points to your jiveHome directory.
            3) Set the Java system property "jiveHome".

        For unix the param value might be:
           /var/web/jiveHome

        For Windows this might be:
           c:\web\jiveHome

        Please note that spaces in the path *might* fail. For example on Windows:
           c:\Program Files\...
        may not work whereas:
           c:\progra~1\..
        will work.
      -->
    <!-- This is the global spring context that is always loaded. -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:spring-bootContext.xml
        </param-value>
    </context-param>

    <!-- A context that is loaded only during setup. -->
    <context-param>
        <param-name>setupContextLocation</param-name>
        <param-value>classpath:spring-setupContext.xml</param-value>
    </context-param>

    <!-- A context loaded during upgrade. -->
    <context-param>
        <param-name>upgradeConfigLocation</param-name>
        <param-value>
            classpath:spring-applicationContext.xml
        </param-value>
    </context-param>

    <!-- Standard runtime context configuration. -->
    <context-param>
        <param-name>runtimeContextLocation</param-name>
        <param-value>classpath:spring-applicationContext.xml</param-value>
    </context-param>


    <!-- Filters -->

    <!--
        Acegi Security filter. Passes incoming requests through the Acegi AAA infrastructure.
    -->
    <filter>
        <filter-name>Acegi HTTP Request Security Filter</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetBean</param-name>
            <param-value>filterChainProxy</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>ApplicationStateFilter</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.ApplicationStateFilter</filter-class>
    </filter>
    <!--
    <filter>
        <filter-name>MaintenanceFilter</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.MaintenanceFilter</filter-class>
        <init-param>
            <param-name>maintenancePage</param-name>
            <param-value>/maintenance.html</param-value>
        </init-param>
    </filter>
    -->
    <filter>
        <filter-name>Timer</filter-name>
        <filter-class>com.jivesoftware.util.TimerFilter</filter-class>
    </filter>

    <!-- Migration filter
        This filter (and its mappings) is disabled by default. If you have migrated from Jive Forums 5.5,
        Jive Integrated Server or Jive Knowledge Base 1.7.x it is recommended to enable this filter. This will
        filter will automatically translate calls for thread.jspa message.jspa, messageview.jspa
        entry.jspa, forum.jspa, category.jspa and kbcategory.jspa pages to Clearspace urls such as /thread/xyz,
        /message/xyz, etc
    -->
    <filter>
        <filter-name>migration</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.MigrationFilter</filter-class>
    </filter>
    <filter>
        <filter-name>request-encoding</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.SetRequestCharacterEncodingFilter</filter-class>
    </filter>
    <filter>
        <filter-name>response-encoding</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.SetResponseCharacterEncodingFilter</filter-class>
    </filter>
    <filter>
        <filter-name>dwrFilter</filter-name>
        <filter-class>org.directwebremoting.servlet.DwrWebContextFilter</filter-class>
    </filter>
    <!--
    <filter>
        <filter-name>NoCacheFilter</filter-name>
        <filter-class>com.jivesoftware.util.NoCacheFilter</filter-class>
    </filter>
    -->
    <filter>
        <filter-name>NoCacheFilter</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetBean</param-name>
            <param-value>noCacheFilter</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>PresenceFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>presenceFilter</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter>
        <filter-name>sitemeshFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
        <!--<filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>-->
    </filter>
    <filter>
        <filter-name>strutsFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
        <!--  <filter-class>com.jivesoftware.community.web.struts.JiveFilterDispatcher</filter-class> -->
    </filter>

    <filter>
        <filter-name>plugins</filter-name>
        <filter-class>com.jivesoftware.base.plugin.PluginFilter</filter-class>
    </filter>

    <filter>
        <filter-name>HttpBinding</filter-name>
        <filter-class>com.jivesoftware.community.xmpp.HttpBindingFilter</filter-class>
    </filter>

    <!--
        Guest page caching filter. This filter will enable caching of guest views for pages.
        Disabled by default, set the jive property 'jive.pageCache.enabled' to 'true' to enable.
        To change the expiry time set the jive property 'jive.pageCache.expiration.seconds'
        (30 by default)
    -->
    <filter>
        <filter-name>page-cache</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.JiveCacheFilter</filter-class>
    </filter>

    <!--
        Sets cache control headers for resources so browsers can cache the resource (an hour by default).
        This reduces the number of requests that are made to the application server.
        Enabled by default, set the jive property 'jive.maxAgeFilter.enabled' to 'false' to enable.
        To change the expiry time set the jive property 'jive.maxAgeFilter.maxage.seconds'
        (3600 by default)
    -->
    <filter>
        <filter-name>maxAgeFilter</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.JiveMaxAgeFilter</filter-class>
    </filter>

    <!--
        Sets the HTTP response header to disable page caching for dynamic pages.

        Sets response header to the following:

            Expires: now
            Cache-Control: max-age=0
            Cache-Control: no-store
            Cache-Control: private
            Pragma: no-cache
    -->
    <filter>
        <filter-name>dynamicResponseHeader</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.JiveDynamicResponseHeaderFilter</filter-class>
    </filter>

    <!--
        Compresses response data to reduce network traffic and to speed up page load times for
        clients on a slow connection. Disabled by default, set the jive property
        'jive.compressionFilter.enabled' to 'true' to enable.
    -->
    <filter>
        <filter-name>compressionFilter</filter-name>
        <filter-class>com.jivesoftware.community.web.filter.JiveCompressionFilter</filter-class>
    </filter>

    <!-- Filter mappings
         Note: the ordering of these filters is important.
    -->

    <filter-mapping>
        <filter-name>ApplicationStateFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>Acegi HTTP Request Security Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
   <!--
    <filter-mapping>
        <filter-name>HttpBinding</filter-name>
        <url-pattern>/http-bind/</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>InitializationCheck</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>InitializationCheck</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    -->


    <filter-mapping>
        <filter-name>plugins</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- maintenance filter -->
    <!--
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MaintenanceFilter</filter-name>
        <url-pattern>/tags/*</url-pattern>
    </filter-mapping>
    -->

    <!-- Migration filter -->
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/forum.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/thread.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/message.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/messageview.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/entry.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/category.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/kbcategory.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>migration</filter-name>
        <url-pattern>/rss/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>dwrFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>NoCacheFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>request-encoding</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>request-encoding</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>

    <!--
        This filter mapping should be basically the first thing in the filter-mapping list after the
        request-encoding filter. We have it here so that all other filters can execute on the content
        and this filter will be the last in the chain to be executed prior to the content being
        returned to the client. That way no other filter will attempt to alter any returning
        compressed content which almost certainly will result in failure.
    -->
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/community/feeds/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/search/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>compressionFilter</filter-name>
        <url-pattern>/tags/*</url-pattern>
    </filter-mapping>

    <!-- Presence filter mappings - not *.jspa but the set of core pages. This is really more
         representative of actual users using the site.
    -->
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/index.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/search.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>PresenceFilter</filter-name>
        <url-pattern>/post.jspa</url-pattern>
    </filter-mapping>

    <!-- static resources to cache if enabled. Will clear out all other cache controls from the header and
         set max-age in the response.

         THIS MUST BE DEFINED AFTER dynamicResponseHeader to cleanup controls already set by dynamicResponseHeader
    -->
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/images/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/styles/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/themes/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/scripts/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/help/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/admin/images/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/admin/scripts/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/admin/style/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/admin/themes/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/upgrade/images/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/upgrade/style/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/resources/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/servlet/JiveServlet/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>/dwr/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>*.ico</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>*.png</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>*.jpg</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>maxAgeFilter</filter-name>
        <url-pattern>*.gif</url-pattern>
    </filter-mapping>

    <!--
        Requests to disable page caching for. THIS MUST BE DEFINED AFTER maxAgeFilter so that this filter
        can ingore content with previously configured Cache-Controls
     -->
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/community/feeds/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/search/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/tags/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/projects/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>dynamicResponseHeader</filter-name>
        <url-pattern>/groups/*</url-pattern>
    </filter-mapping>

    <!-- Page Caching Filter -->
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/index.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/projects/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/search/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/tags/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>page-cache</filter-name>
        <url-pattern>/groups/*</url-pattern>
    </filter-mapping>

    <!-- Sitemesh for page decoration and webwork-->
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemeshFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
        <!-- The SetResponseCharacterEncoding filter must come after the sitemesh filter and before
         any other filters.
    -->
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>*.jspa</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/community/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/thread/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/message/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/docs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/blogs/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/people/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/projects/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/search/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/tags/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>response-encoding</filter-name>
        <url-pattern>/groups/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>strutsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- Listeners -->
    <listener>
        <listener-class>com.jivesoftware.base.log.LogConfigurator</listener-class>
    </listener>
    <!--
		- Loads the root application context of this web app at startup,
		- by default from "/WEB-INF/spring-applicationContext.xml".
		- Note that you need to fall back to Spring's ContextLoaderServlet for
		- J2EE servers that do not follow the Servlet 2.4 initialization order.
		-
		- Use WebApplicationContextUtils.getWebApplicationContext(servletContext)
		- to access it anywhere in the web application, outside of the framework.
		-
		- The root context is the parent of all servlet-specific contexts.
		- This means that its beans are automatically available in these child contexts,
		- both for getBean(name) calls and (external) bean references.
	-->
    <listener>
        <listener-class>com.jivesoftware.base.JiveApplicationContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.jivesoftware.community.web.filter.PresenceFilter</listener-class>
    </listener>
    <listener>
        <listener-class>com.jivesoftware.community.web.ContinuationListener</listener-class>
    </listener>

    <!-- Session event listener -->
    <listener>
        <listener-class>com.jivesoftware.community.aaa.AuthSessionListener</listener-class>
    </listener>

    <!-- Servlets -->
    <servlet>
        <servlet-name>JiveServlet</servlet-name>
        <servlet-class>com.jivesoftware.community.util.JiveServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>ThemeServlet</servlet-name>
        <servlet-class>com.jivesoftware.community.theme.ThemeServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <display-name>DWR Servlet</display-name>
        <description>Direct Web Remoter Servlet</description>
        <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
        <init-param>
             <param-name>logLevel</param-name>
             <param-value>ERROR</param-value>
        </init-param>
        <init-param>
             <param-name>pollAndCometEnabled</param-name>
             <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>allowGetForSafariButMakeForgeryEasier</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>publishContainerAs</param-name>
            <param-value>dwr-container</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
          <description>Do we startup in debug mode?</description>
        </init-param>
        <load-on-startup>6</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>ResourceLoaderServlet</servlet-name>
        <servlet-class>com.jivesoftware.community.web.servlet.ResourceLoaderServlet</servlet-class>
        <!--
           JS script alias definitions.

           In the form of "script.[alias name]"
        -->
        <init-param>
            <param-name>script.messagepost</param-name>
            <param-value>cookies|utils|hilite|post|prototype|mctabs|multifile|uploadmonitor|autosave|guieditor|spellcheckbase|spellchecklite|posteditor|scriptaculous|effects|controls|domLib|domTT|ua|ftiens4|jive|fastinit|jiveimage|fancyzoomhtml|fancyzoom</param-value>
        </init-param>
        <init-param>
            <param-name>script.docupload</param-name>
            <param-value>cookies|utils|hilite|post|prototype|uploadmonitor|scriptaculous|effects|controls|domLib|domTT|ua|ftiens4|jive|fancyzoomhtml|fancyzoom</param-value>
        </init-param>
        <init-param>
            <param-name>script.global</param-name>
            <param-value>cookies|utils|hilite|prototype|scriptaculous|effects|controls|domLib|domTT|ua|ftiens4|jive|jiveimage|fancyzoomhtml|fancyzoom</param-value>
        </init-param>
        <init-param>
            <param-name>script.cookies</param-name>
            <param-value>/scripts/cookies.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.jive</param-name>
            <param-value>/scripts/jive.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.utils</param-name>
            <param-value>/scripts/utils.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.hilite</param-name>
            <param-value>/scripts/row-hilite.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.post</param-name>
            <param-value>/scripts/post.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.prototype</param-name>
            <param-value>/scripts/prototype/prototype.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.mctabs</param-name>
            <param-value>/scripts/tiny_mce/utils/mctabs.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.multifile</param-name>
            <param-value>/scripts/multifile.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.uploadmonitor</param-name>
            <param-value>/scripts/uploadprogressmonitor.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.autosave</param-name>
            <param-value>/scripts/autosave.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.guieditor</param-name>
            <param-value>/scripts/guieditor.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.spellcheckbase</param-name>
            <param-value>/scripts/spellchecker/spellcheckerbase.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.spellchecklite</param-name>
            <param-value>/scripts/spellchecker/litespellchecker.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.posteditor</param-name>
            <param-value>/scripts/posteditor.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.scriptaculous</param-name>
            <param-value>/scripts/scriptaculous/scriptaculous.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.effects</param-name>
            <param-value>/scripts/scriptaculous/effects.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.controls</param-name>
            <param-value>/scripts/scriptaculous/controls.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.domLib</param-name>
            <param-value>/scripts/domLib.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.domTT</param-name>
            <param-value>/scripts/domTT.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.ua</param-name>
            <param-value>/scripts/ua.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.ftiens4</param-name>
            <param-value>/scripts/ftiens4.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.fastinit</param-name>
            <param-value>/scripts/fastinit.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.jiveimage</param-name>
            <param-value>/scripts/jiveimage.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.lightbox</param-name>
            <param-value>/scripts/lightbox.js</param-value>
        </init-param>

        <init-param>
            <param-name>script.fancyzoomhtml</param-name>
            <param-value>/scripts/fancyzoom/js/FancyZoomHTML.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.fancyzoom</param-name>
            <param-value>/scripts/fancyzoom/js/FancyZoom.js</param-value>
        </init-param>
        <init-param>
            <param-name>script.tablekit</param-name>
            <param-value>/scripts/tablekit/tablekit.js</param-value>
        </init-param>

        <load-on-startup>4</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>ImageConfirmation</servlet-name>
        <servlet-class>com.jivesoftware.community.web.servlet.ImageConfirmationServlet</servlet-class>
    </servlet>

    <!--<servlet>-->
        <!--<servlet-name>XFireServlet</servlet-name>-->
        <!--<display-name>XFire Servlet</display-name>-->
        <!--<servlet-class>com.jivesoftware.community.webservices.server.xfire.JiveXFireServlet</servlet-class>-->
        <!--<load-on-startup>7</load-on-startup>-->
    <!--</servlet>-->
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>7</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>CEServlet</servlet-name>
        <servlet-class>com.jivesoftware.community.web.servlet.CommunityEverywhereServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>BlogXMLRPC</servlet-name>
        <servlet-class>com.jivesoftware.community.webservices.xmlrpc.CommunityXMLRPCServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>AdminGraphing</servlet-name>
        <servlet-class>com.jivesoftware.community.stats.GraphServlet</servlet-class>
    </servlet>

    <!-- used for jsp taglibs in freemarker files -->
    <servlet>
        <servlet-name>JspSupportServlet</servlet-name>
        <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>

    <!--<servlet>
        <servlet-name>ProxoolStatistics</servlet-name>
        <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
    </servlet>-->

    <!--<servlet>-->
        <!--<servlet-name>XmlRpcServlet</servlet-name>-->
        <!--<servlet-class>com.jivesoftware.community.webservices.server.xmlrpc.JiveXmlRpcServlet</servlet-class>-->
        <!--<init-param>-->
          <!--<param-name>enabledForExtensions</param-name>-->
          <!--<param-value>true</param-value>-->
          <!--<description>-->
          <!--</description>-->
        <!--</init-param>-->
        <!--<load-on-startup>8</load-on-startup>-->
    <!--</servlet>-->

    <!--@@JSPC-SERVLETS@@-->

    <!-- Servlet mappings -->
    <servlet-mapping>
        <servlet-name>JiveServlet</servlet-name>
        <url-pattern>/servlet/JiveServlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>JiveServlet</servlet-name>
        <url-pattern>/admin/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>AdminGraphing</servlet-name>
        <url-pattern>/admin/graph</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>ThemeServlet</servlet-name>
        <url-pattern>/themes/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ResourceLoaderServlet</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ResourceLoaderServlet</servlet-name>
        <url-pattern>/plugins/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ImageConfirmation</servlet-name>
        <url-pattern>/confirmation/imageconfirmationservlet</url-pattern>
    </servlet-mapping>

    <!--<servlet-mapping>
        <servlet-name>ProxoolStatistics</servlet-name>
        <url-pattern>/admin/proxool</url-pattern>
    </servlet-mapping>-->

    <!--<servlet-mapping>-->
        <!--<servlet-name>XFireServlet</servlet-name>-->
        <!--<url-pattern>/rpc/soap/*</url-pattern>-->
    <!--</servlet-mapping>-->

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/rpc/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>CEServlet</servlet-name>
        <url-pattern>/everywhere/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>BlogXMLRPC</servlet-name>
        <url-pattern>/blogs/xmlrpc/*</url-pattern>
    </servlet-mapping>

    <!--<servlet-mapping>-->
        <!--<servlet-name>XmlRpcServlet</servlet-name>-->
        <!--<url-pattern>/rpc/xmlrpc/*</url-pattern>-->
    <!--</servlet-mapping>-->

    <!--
        Set the session timeout for the webapp to 60 minutes. If you would like to
        configure the timeout through  your application server comment out this section.
    -->
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>

    <!-- weblogic requires that these are defined -->
    <mime-mapping>
        <extension>css</extension>
        <mime-type>text/css</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>js</extension>
        <mime-type>application/x-javascript</mime-type>
    </mime-mapping>

    <!-- Welcome file list -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- Error pages -->
    <error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
    <error-page>
        <exception-type>java.lang.SecurityException</exception-type>
        <location>/securityException.jsp</location>
    </error-page>
    <!-- tag lib definitions -->
    <taglib>
        <taglib-uri>struts-tags</taglib-uri>
        <taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>jivetags</taglib-uri>
        <taglib-location>/WEB-INF/jive.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>oscache</taglib-uri>
        <taglib-location>/WEB-INF/oscache.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://www.opensymphony.com/sitemesh/decorator</taglib-uri>
        <taglib-location>/WEB-INF/sitemesh-decorator.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://www.opensymphony.com/sitemesh/page</taglib-uri>
        <taglib-location>/WEB-INF/sitemesh-page.tld</taglib-location>
    </taglib>
</web-app>
