<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
  <display-name>OpenKM</display-name>
  
  <!-- Tomcat resources -->
  <!-- Already defined in $TOMCAT_HOME/conf/context.xml -->
  <!--
  <resource-ref>
    <description>OKM Datasource</description>
    <res-ref-name>jdbc/OpenKMDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
  <resource-ref>
    <description>OKM Mail</description>
    <res-ref-name>mail/OpenKM</res-ref-name>
    <res-type>javax.mail.Session</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
  -->
  
  <jsp-config>
    <taglib>
      <taglib-uri>http://www.openkm.com/tags/utils</taglib-uri>
      <taglib-location>/WEB-INF/tlds/utils.tld</taglib-location>
    </taglib>
  </jsp-config>
  
  <!-- Filters -->
  <filter>
	<filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter>
    <filter-name>WebDAVFilter</filter-name>
    <filter-class>com.openkm.webdav.WebDAVFilter</filter-class>
  </filter>
  <filter>
    <filter-name>UploadThrottleFilter</filter-name>
    <filter-class>com.openkm.servlet.frontend.UploadThrottleFilter</filter-class>
  </filter>
  
  <!-- Filter Mappings -->
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>WebDAVFilter</filter-name>
    <url-pattern>/webdav/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>UploadThrottleFilter</filter-name>
    <url-pattern>/frontend/FileUpload</url-pattern>
  </filter-mapping>
  
  <!-- Listeners -->
  <listener>
    <listener-class>com.openkm.servlet.SessionListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
  </listener>
  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/appContext.xml
        file:${catalina.home}/OpenKM.xml
    </param-value>
  </context-param>
  
  <!-- Startup Servlets -->
  <servlet>
    <servlet-name>RepositoryStartup</servlet-name>
    <servlet-class>com.openkm.servlet.RepositoryStartupServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  
  <!-- Frontend Servlets -->
  <servlet>
    <servlet-name>WorkspaceServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.WorkspaceServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DocumentServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.DocumentServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendAuthServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.AuthServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RepositoryServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.RepositoryServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FolderServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.FolderServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PropertyGroupServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.PropertyGroupServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendDownloadServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.DownloadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ConverterServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.ConverterServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DashboardServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.DashboardServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>GeneralServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.GeneralServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>NotifyServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.NotifyServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendWorkflowServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.WorkflowServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>SearchServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.SearchServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FileUploadServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.FileUploadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>BookmarkServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.BookmarkServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MailServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.MailServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ThesaurusServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.ThesaurusServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PropertyServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.PropertyServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>ChatServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.ChatServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>FrontendUserConfigServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.UserConfigServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>NoteServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.NoteServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendLanguageServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.LanguageServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DatabaseMetadataServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.DatabaseMetadataServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>KeyValueServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.KeyValueServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.TestServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ExecuteReportServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.ExecuteReportServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UINotificationServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.UINotificationServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MassiveServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.MassiveServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendOmrServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.OmrServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PaginationServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.PaginationServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CSVExporterServlet</servlet-name>
    <servlet-class>com.openkm.servlet.frontend.CSVExporterServlet</servlet-class>
  </servlet>
  
  <!-- Extension servlets -->
  <servlet>
    <servlet-name>ProposedSubscriptionServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ProposedSubscriptionServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ProposedQueryServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ProposedQueryServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MessageServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.MessageServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>StaplingServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.StaplingServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>StaplingDownloadServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.StaplingDownloadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FrontendActivityLogServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ActivityLogServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ZohoServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ZohoServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ZohoFileUploadServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ZohoFileUploadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ForumServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.ForumServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>WikiServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.WikiServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DataBrowserServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.DataBrowserServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CustomerExtensionServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.CustomerExtensionServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MacrosServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.MacrosServlet</servlet-class>
  </servlet>
  
  <!-- Extension Admin servlets -->
  <servlet>
    <servlet-name>DocumentExpirationServlet</servlet-name>
    <servlet-class>com.openkm.extension.servlet.admin.DocumentExpirationServlet</servlet-class>
  </servlet>
  
  <!-- Mobile servlets -->
  <servlet>
  	<servlet-name>MobileDesktopServlet</servlet-name>
  	<servlet-class>com.openkm.servlet.mobile.DesktopServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>MobileDashboardServlet</servlet-name>
  	<servlet-class>com.openkm.servlet.mobile.DashboardServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>MobileSearchServlet</servlet-name>
  	<servlet-class>com.openkm.servlet.mobile.SearchServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>MobileGeneralServlet</servlet-name>
  	<servlet-class>com.openkm.servlet.mobile.GeneralServlet</servlet-class>
  </servlet>
  
  <!-- Misc servlets -->
  <servlet>
    <servlet-name>SyndicationServlet</servlet-name>
    <servlet-class>com.openkm.servlet.SyndicationServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PasswordResetServlet</servlet-name>
    <servlet-class>com.openkm.servlet.PasswordResetServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>StatusServlet</servlet-name>
    <servlet-class>com.openkm.servlet.StatusServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DownloadServlet</servlet-name>
    <servlet-class>com.openkm.servlet.DownloadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MimeIconServlet</servlet-name>
    <servlet-class>com.openkm.servlet.MimeIconServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ImageLogoServlet</servlet-name>
    <servlet-class>com.openkm.servlet.ImageLogoServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>TextToSpeechServlet</servlet-name>
    <servlet-class>com.openkm.servlet.TextToSpeechServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>FlagIconServlet</servlet-name>
    <servlet-class>com.openkm.servlet.FlagIconServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>StyleCssServlet</servlet-name>
    <servlet-class>com.openkm.servlet.CssServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>WorkflowRegisterServlet</servlet-name>
    <servlet-class>com.openkm.servlet.WorkflowRegisterServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>HtmlPreviewServlet</servlet-name>
    <servlet-class>com.openkm.servlet.HtmlPreviewServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>SyntaxHighlighterServlet</servlet-name>
    <servlet-class>com.openkm.servlet.SyntaxHighlighterServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>SessionKeepAliveServlet</servlet-name>
    <servlet-class>com.openkm.servlet.SessionKeepAliveServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MailPreviewServlet</servlet-name>
    <servlet-class>com.openkm.servlet.MailPreviewServlet</servlet-class>
  </servlet>
  
  <!-- Admin servlets -->
  <servlet>
    <servlet-name>StatsGraphServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.StatsGraphServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RepositoryCheckerServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.RepositoryCheckerServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>WorkflowGraphServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.WorkflowGraphServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RegisterWorkflowServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.RegisterWorkflowServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ReportServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ReportServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CronTabServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.CronTabServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LogCatServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.LogCatServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>TailServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.TailServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DatabaseQueryServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.DatabaseQueryServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>AuthServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.AuthServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PropertyGroupsServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.PropertyGroupsServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ActivityLogServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ActivityLogServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LoggedUsersServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.LoggedUsersServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MailAccountServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.MailAccountServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>TwitterAccountServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.TwitterAccountServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>WorkflowServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.WorkflowServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>MimeTypeServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.MimeTypeServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ProfileServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ProfileServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UserConfigServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.UserConfigServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>RebuildIndexesServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.RebuildIndexesServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ListIndexesServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ListIndexesServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CheckEmailServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.CheckEmailServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LanguageServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.LanguageServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ConfigServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ConfigServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>HibernateStatsServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.HibernateStatsServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CacheStatsServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.CacheStatsServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ProfilingStatsServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.ProfilingStatsServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>AutomationServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.AutomationServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CheckTextExtractionServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.CheckTextExtractionServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>TextExtractionQueueServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.TextExtractionQueueServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PendingTaskQueueServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.PendingTaskQueueServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CssServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.CssServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>OmrServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.OmrServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>PurgePermissionsServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.PurgePermissionsServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UnitTestingServlet</servlet-name>
    <servlet-class>com.openkm.servlet.admin.UnitTestingServlet</servlet-class>
  </servlet>
  
  <!-- CMIS Servlets -->
  <servlet>
    <servlet-name>cmisAtom</servlet-name>
    <servlet-class>org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet</servlet-class>
    <init-param>
      <param-name>callContextHandler</param-name>
      <param-value>org.apache.chemistry.opencmis.server.shared.BasicAuthCallContextHandler</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>cmisBrowser</servlet-name>
    <servlet-class>org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet</servlet-class>
    <init-param>
      <param-name>callContextHandler</param-name>
      <param-value>org.apache.chemistry.opencmis.server.shared.BasicAuthCallContextHandler</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  
  <!-- Test Servlets -->
  <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>com.openkm.servlet.TestServlet</servlet-class>
  </servlet>
  
  <!-- Startup servlets -->
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  
  <!-- Frontend Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>WorkspaceServlet</servlet-name>
    <url-pattern>/frontend/Workspace</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DocumentServlet</servlet-name>
    <url-pattern>/frontend/Document</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendAuthServlet</servlet-name>
    <url-pattern>/frontend/Auth</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RepositoryServlet</servlet-name>
    <url-pattern>/frontend/Repository</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FolderServlet</servlet-name>
    <url-pattern>/frontend/Folder</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PropertyGroupServlet</servlet-name>
    <url-pattern>/frontend/PropertyGroup</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MailServlet</servlet-name>
    <url-pattern>/frontend/Mail</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendDownloadServlet</servlet-name>
    <url-pattern>/frontend/Download</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ConverterServlet</servlet-name>
    <url-pattern>/frontend/Converter</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DashboardServlet</servlet-name>
    <url-pattern>/frontend/Dashboard</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>GeneralServlet</servlet-name>
    <url-pattern>/frontend/General</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>NotifyServlet</servlet-name>
    <url-pattern>/frontend/Notify</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendWorkflowServlet</servlet-name>
    <url-pattern>/frontend/Workflow</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>SearchServlet</servlet-name>
    <url-pattern>/frontend/Search</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FileUploadServlet</servlet-name>
    <url-pattern>/frontend/FileUpload</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>BookmarkServlet</servlet-name>
    <url-pattern>/frontend/Bookmark</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ThesaurusServlet</servlet-name>
    <url-pattern>/frontend/Thesaurus</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PropertyServlet</servlet-name>
    <url-pattern>/frontend/Property</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ChatServlet</servlet-name>
    <url-pattern>/frontend/Chat</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendUserConfigServlet</servlet-name>
    <url-pattern>/frontend/UserConfig</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>NoteServlet</servlet-name>
    <url-pattern>/frontend/Note</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendLanguageServlet</servlet-name>
    <url-pattern>/frontend/Language</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DatabaseMetadataServlet</servlet-name>
    <url-pattern>/frontend/DatabaseMetadata</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>KeyValueServlet</servlet-name>
    <url-pattern>/frontend/KeyValue</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ExecuteReportServlet</servlet-name>
    <url-pattern>/frontend/ExecuteReport</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UINotificationServlet</servlet-name>
    <url-pattern>/frontend/UINotification</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MassiveServlet</servlet-name>
    <url-pattern>/frontend/Massive</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendOmrServlet</servlet-name>
    <url-pattern>/frontend/Omr</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PaginationServlet</servlet-name>
    <url-pattern>/frontend/Pagination</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CSVExporterServlet</servlet-name>
    <url-pattern>/frontend/CSVExporter</url-pattern>
  </servlet-mapping>
  
  <!-- Test Servlets -->
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/frontend/Test</url-pattern>
  </servlet-mapping>
  
  <!-- Extensions Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>StaplingServlet</servlet-name>
    <url-pattern>/extension/Stapling</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>StaplingDownloadServlet</servlet-name>
    <url-pattern>/extension/StaplingDownload</url-pattern>
  </servlet-mapping>
    <servlet-mapping>
    <servlet-name>ProposedSubscriptionServlet</servlet-name>
    <url-pattern>/extension/ProposedSubscription</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ProposedQueryServlet</servlet-name>
    <url-pattern>/extension/ProposedQuery</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MessageServlet</servlet-name>
    <url-pattern>/extension/Message</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FrontendActivityLogServlet</servlet-name>
    <url-pattern>/extension/ActivityLog</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ZohoServlet</servlet-name>
    <url-pattern>/extension/Zoho</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ForumServlet</servlet-name>
    <url-pattern>/extension/Forum</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WikiServlet</servlet-name>
    <url-pattern>/extension/Wiki</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CustomerExtensionServlet</servlet-name>
    <url-pattern>/extension/Customer</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WorkflowGraphServlet</servlet-name>
    <url-pattern>/extension/WorkflowGraph</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DataBrowserServlet</servlet-name>
    <url-pattern>/extension/DataBrowser</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MacrosServlet</servlet-name>
    <url-pattern>/extension/Macros</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ZohoFileUploadServlet</servlet-name>
    <url-pattern>/extension/ZohoFileUpload</url-pattern>
  </servlet-mapping>
  
  <!-- Extension Admin Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>DocumentExpirationServlet</servlet-name>
    <url-pattern>/admin/DocumentExpiration</url-pattern>
  </servlet-mapping>
  
  <!-- Mobile servlets mappings -->
  <servlet-mapping>
  	<servlet-name>MobileDesktopServlet</servlet-name>
  	<url-pattern>/mobile/Desktop</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>MobileDashboardServlet</servlet-name>
  	<url-pattern>/mobile/Dashboard</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>MobileSearchServlet</servlet-name>
  	<url-pattern>/mobile/Search</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>MobileGeneralServlet</servlet-name>
  	<url-pattern>/mobile/General</url-pattern>
  </servlet-mapping>
  
  <!-- Misc servlets mappings -->
  <servlet-mapping>
    <servlet-name>SyndicationServlet</servlet-name>
    <url-pattern>/feed/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PasswordResetServlet</servlet-name>
    <url-pattern>/PasswordReset</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>StatusServlet</servlet-name>
    <url-pattern>/Status</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DownloadServlet</servlet-name>
    <url-pattern>/Download</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MimeIconServlet</servlet-name>
    <url-pattern>/mime/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>FlagIconServlet</servlet-name>
    <url-pattern>/flag/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ImageLogoServlet</servlet-name>
    <url-pattern>/logo/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>StyleCssServlet</servlet-name>
    <url-pattern>/style/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>TextToSpeechServlet</servlet-name>
    <url-pattern>/TextToSpeech</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WorkflowRegisterServlet</servlet-name>
    <url-pattern>/workflow-register/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>HtmlPreviewServlet</servlet-name>
    <url-pattern>/HtmlPreview</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>SyntaxHighlighterServlet</servlet-name>
    <url-pattern>/SyntaxHighlighter</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>SessionKeepAliveServlet</servlet-name>
    <url-pattern>/SessionKeepAlive</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MailPreviewServlet</servlet-name>
    <url-pattern>/MailPreview</url-pattern>
  </servlet-mapping>
  
  <!-- Admin Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>StatsGraphServlet</servlet-name>
    <url-pattern>/admin/StatsGraph</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RepositoryCheckerServlet</servlet-name>
    <url-pattern>/admin/RepositoryChecker</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WorkflowGraphServlet</servlet-name>
    <url-pattern>/admin/WorkflowGraph</url-pattern>
  </servlet-mapping>
   <servlet-mapping>
    <servlet-name>RegisterWorkflowServlet</servlet-name>
    <url-pattern>/admin/RegisterWorkflow</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ReportServlet</servlet-name>
    <url-pattern>/admin/Report</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CronTabServlet</servlet-name>
    <url-pattern>/admin/CronTab</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LogCatServlet</servlet-name>
    <url-pattern>/admin/LogCat</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>TailServlet</servlet-name>
    <url-pattern>/admin/Tail</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DatabaseQueryServlet</servlet-name>
    <url-pattern>/admin/DatabaseQuery</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AuthServlet</servlet-name>
    <url-pattern>/admin/Auth</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PropertyGroupsServlet</servlet-name>
    <url-pattern>/admin/PropertyGroups</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ActivityLogServlet</servlet-name>
    <url-pattern>/admin/ActivityLog</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LoggedUsersServlet</servlet-name>
    <url-pattern>/admin/LoggedUsers</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MailAccountServlet</servlet-name>
    <url-pattern>/admin/MailAccount</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>TwitterAccountServlet</servlet-name>
    <url-pattern>/admin/TwitterAccount</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WorkflowServlet</servlet-name>
    <url-pattern>/admin/Workflow</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MimeTypeServlet</servlet-name>
    <url-pattern>/admin/MimeType</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ProfileServlet</servlet-name>
    <url-pattern>/admin/Profile</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UserConfigServlet</servlet-name>
    <url-pattern>/admin/UserConfig</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>RebuildIndexesServlet</servlet-name>
    <url-pattern>/admin/RebuildIndexes</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ListIndexesServlet</servlet-name>
    <url-pattern>/admin/ListIndexes</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CheckEmailServlet</servlet-name>
    <url-pattern>/admin/CheckEmail</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LanguageServlet</servlet-name>
    <url-pattern>/admin/Language</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ConfigServlet</servlet-name>
    <url-pattern>/admin/Config</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>HibernateStatsServlet</servlet-name>
    <url-pattern>/admin/HibernateStats</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CacheStatsServlet</servlet-name>
    <url-pattern>/admin/CacheStats</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ProfilingStatsServlet</servlet-name>
    <url-pattern>/admin/ProfilingStats</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AutomationServlet</servlet-name>
    <url-pattern>/admin/Automation</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CheckTextExtractionServlet</servlet-name>
    <url-pattern>/admin/CheckTextExtraction</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>TextExtractionQueueServlet</servlet-name>
    <url-pattern>/admin/TextExtractionQueue</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>PendingTaskQueueServlet</servlet-name>
    <url-pattern>/admin/PendingTaskQueue</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CssServlet</servlet-name>
    <url-pattern>/admin/Css</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>OmrServlet</servlet-name>
    <url-pattern>/admin/Omr</url-pattern>
  </servlet-mapping>  
  <servlet-mapping>
    <servlet-name>PurgePermissionsServlet</servlet-name>
    <url-pattern>/admin/PurgePermissions</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UnitTestingServlet</servlet-name>
    <url-pattern>/admin/UnitTesting</url-pattern>
  </servlet-mapping>
  
  <!-- CMIS Servlet Mappings -->
  <servlet-mapping>
    <servlet-name>cmisAtom</servlet-name>
    <url-pattern>/cmis/atom/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>cmisBrowser</servlet-name>
    <url-pattern>/cmis/browser/*</url-pattern>
  </servlet-mapping>
  
  <!-- Test Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/Test</url-pattern>
  </servlet-mapping>

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

  <error-page>
    <exception-type>com.openkm.frontend.client.OKMException</exception-type>
    <location>/error.jsp</location>
  </error-page>

  <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
  </error-page>
</web-app>