Я делаю решение для кэширования для метода, расположенного в сервлете.
Сервлет выглядит следующим образом:
public class DataOptimizedServlet extends DataServlet {
...
@Override
@Cacheable(value = "dataOptimized", key = "#req.getRequestURI()")
public byte[] getData(HttpServletRequest req) {
// data retrieval logic
}
...
}
в ehcache. xml У меня есть следующая конфигурация:
<cache alias="dataOptimized">
<expiry>
<ttl unit="hours">30</ttl>
</expiry>
<resources>
<heap unit="entries">20000</heap>
<offheap unit="MB">200</offheap>
</resources>
</cache>
Также в файле ctx-cache.xml
есть следующая конфигурация ( и этот файл импортируется в web.xml
):
<cache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.jcache.JCacheCacheManager">
<property name="cacheManager">
<bean class="org.springframework.cache.jcache.JCacheManagerFactoryBean" p:cacheManagerUri="classpath:ehcache.xml" />
</property>
</bean>
Но он не работает, метод getData
по-прежнему используется для тех же URL-адресов. У меня много @Cacheables
, работающих в проекте и настроенных таким же образом, но ни один из них не находится в сервлете напрямую (они в службах).
Чего мне не хватает?