<?xml version="5.2" encoding="UTF-8"?>
<display-name>@WEBAPP.DISPLAY.NAME@</display-name>
<description>@WEBAPP.DESCRIPTION@</description>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/moduleApplicationContext.xml
classpath*:/webModuleApplicationContext.xml
classpath:applicationContext-service.xml
classpath:openmrs-servlet.xml
</param-value>
</context-param>
<!-- These init parameter(s) are read in by org.openmrs.web.Listener -->
<context-param>
<param-name>build.timestamp</param-name>
<param-value>@TIMESTAMP@</param-value>
</context-param>
<context-param>
<param-name>module.repository.url</param-name>
<!-- <param-value>http://localhost:8080/modules</param-value> -->
<param-value>https://modules.openmrs.org/modules</param-value>
</context-param>
<!-- Optional init parameter to specify runtime properties directory -->
<!-- when environment variables cannot be modified and user's home -->
<!-- directory cannot be used. Note: A trailing slash MUST be used -->
<context-param>
<param-name>application.data.directory</param-name>
<param-value></param-value>
</context-param>
<!-- // End init parameters -->
<context-param>
<param-name>defaultHtmlEscape</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>springJspExpressionSupport</param-name>
<param-value>false</param-value>
</context-param>
<listener>
<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
<!-- Should go before Listener so that during webapp shutdown it comes after hibernate shutdown last -->
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.openmrs.web.Listener</listener-class>
<!-- extends ContextLoader -->
</listener>
<!-- This charsetFilter MUST BE THE FIRST FILTER so that all UTF-8 characters are caught -->
<filter>
<filter-name>charsetFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Should be the first real INTERCEPTING filter so that if any database
updates are needed, they can be run by an admin -->
<filter>
<filter-name>StartupErrorFilter</filter-name>
<filter-class>org.openmrs.web.filter.startuperror.StartupErrorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StartupErrorFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- End first INTERCEPTING filter -->
<!-- Should be the second filter so that if setup is needed, all requests go
through this filter next-->
<filter>
<filter-name>InitializationFilter</filter-name>
<filter-class>org.openmrs.web.filter.initialization.InitializationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InitializationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- End second filter -->
<!-- Should be the third filter so that if any database updates are needed, they can be run by an admin-->
<filter>
<filter-name>UpdateFilter</filter-name>
<filter-class>org.openmrs.web.filter.update.UpdateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UpdateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- End third filter -->
<!-- Should be the second filter so that all requests are first wrapped by a
hibernate filter (to help with lazy loading) -->
<filter>
<filter-name>HibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- End second filter -->
<filter>
<filter-name>OpenmrsFilter</filter-name>
<filter-class>org.openmrs.web.filter.OpenmrsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenmrsFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter>
<filter-name>ModuleFilter</filter-name>
<filter-class>org.openmrs.module.web.filter.ModuleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ModuleFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>compressionFilter</filter-name>
<filter-class>org.openmrs.web.filter.GZIPFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.json</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.xml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.dwr</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*.xsn</url-pattern>
</filter-mapping>
<filter>
<filter-name>jspClassLoader</filter-name>
<filter-class>org.openmrs.web.filter.JspClassLoaderFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>jspClassLoader</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>ERROR</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>openmrs</servlet-name>
<servlet-class>org.openmrs.web.DispatcherServlet</servlet-class>
<!-- empty contextConfigLocation passed in here so that module
startup and spring annotation config happen correctly. Spring
must be taking the config file locations from the main param
defined at the top of this xml file -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
</param-value>
</init-param>
<!-- Don't use "load-on-startup" in case initial setup wizard is needed -->
</servlet>
<servlet>
<servlet-name>openmrs_static_content</servlet-name>
<servlet-class>org.openmrs.web.StaticDispatcherServlet</servlet-class>
<!-- Don't use "load-on-startup" in case initial setup wizard is needed -->
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<!-- Gives access to servlets within modules -->
<servlet>
<servlet-name>module_servlet</servlet-name>
<servlet-class>org.openmrs.module.web.ModuleServlet</servlet-class>
<!-- Don't "load-on-startup" in case initial setup wizard is needed -->
</servlet>
<servlet-mapping>
<servlet-name>module_servlet</servlet-name>
<url-pattern>/moduleServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>module_servlet</servlet-name>
<url-pattern>/ms/*</url-pattern>
</servlet-mapping>
<!-- Gives access to resources within modules -->
<servlet>
<servlet-name>module_resources</servlet-name>
<servlet-class>org.openmrs.module.web.ModuleResourcesServlet</servlet-class>
<!-- Don't "load-on-startup" in case initial setup wizard is needed -->
</servlet>
<servlet-mapping>
<servlet-name>module_resources</servlet-name>
<url-pattern>/moduleResources/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>openmrs_static_content</servlet-name>
<url-pattern>/scripts/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>openmrs</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
</session-config>