#caching #jakarta-ee #webpage #ehcache #web.xml
#кэширование #Джакарта-ee #HTML #ehcache #web.xml
Вопрос:
Я работаю над проектом, приложение находится на j2ee, и я использовал ehcache для кэширования веб-страниц, но из-за записей filter это выдает ошибку ошибка кодирования содержимого, я добавил следующий фильтр и ehcache.xml кто-нибудь может сказать, какая запись вызывает это?
web.xml запись фильтра
<filter>
<filter-name>SetCharacterEncodingFilter</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>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<init-param>
<description>Set the size limit for uploaded files.
Format: 10 - 10 bytes
10k - 10 KB
</description>
<param-name>uploadMaxFileSize</param-name>
<param-value>100m</param-value>
</init-param>
<init-param>
<description>Set the threshold size - files below this limit are stored
in memory, files above this limit are stored on disk.
Format: 10 - 10 bytes
10k - 10 KB
</description>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
</init-param>
<init-param>
<param-name>uploadRepositoryPath</param-name>
<param-value>/home</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<filter>
<filter-name>CachePage1CachingFilter</filter-name>
<filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>
<init-param>
<param-name>suppressStackTraces</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cacheName</param-name>
<param-value>CachePage1CachingFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
ehcache.xml заключается в следующем
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="10"
overflowToDisk="true"
/>
<!-- Page and Page Fragment Caches -->
<cache name="CachePage1CachingFilter"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="10000"
timeToLiveSeconds="10000"
overflowToDisk="true">
</cache>
Отредактировано:-
Я попробовал, и я понял, что проблема связана с шаблоном URL в
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>/*</url-pattern>
в фильтре это происходит непрерывно в фильтре исключение было реентерабельным исключением, если я пишу следующее
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
это работает нормально, но я хочу, чтобы это работало для jsf, а ввод jsf выполняется в preety config следующим образом
<url-mapping id="ManageUsers">
<pattern>/manageUsers</pattern>
<view-id>/pages/master/manageUsers.jsf</view-id>
</url-mapping>
что мне следует сделать, чтобы избежать этого?
Комментарии:
1. Это помогает, если вы публикуете точное сообщение об ошибке, включая трассировку стека.
Ответ №1:
С помощью спецификации сервлета 2.5 (реализованной Tomcat 6) вы можете указать несколько шаблонов URL-адресов:
<filter-mapping>
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
Для версии до версии 2.5 вы могли бы указать два сопоставления
<filter-mapping>
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CachePage1CachingFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>