贴代码:
public class EhcacheTest { public Cache callCache(String cacheName){
CacheManager cacheManager = CacheManager.create("ehcache.xml");
Cache cache = cacheManager.getCache(cacheName);
return cache;
}
public static void main(String[] args) {
CacheManager cacheManager = CacheManager.create("src/ehcache.xml");
Cache cache = cacheManager.getCache("SimplePageFragmentCachingFilter");
}通过 main 方法去运行 Cache cache 这里能取到值,但是在Web项目发布到tomcat里 通过页面访问Controller 去调 callCache
方法 Cache cache 是null值,(ehcache.xml配置文件放在默认的src目录下) 以下是Servlet调用的代码, 代码1 处的 cache 是null值。 protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
EhcacheTest eh = new EhcacheTest();
Cache cache = eh.callCache("SimplePageFragmentCachingFilter");// 代码1 request.setAttribute("tvalue", tvalue);
request.getRequestDispatcher("cache.jsp").forward(request, response);
}
通过看源码发现代码2处这里返回的是空值
public Cache getCache(String name) throws IllegalStateException, ClassCastException {
checkStatus();
Ehcache ehcache = ehcaches.get(name);
return ehcache instanceof Cache ? (Cache) ehcache : null;//代码2
}
希望有搞过这个的大神们 帮帮忙~纠结1天了
public class EhcacheTest { public Cache callCache(String cacheName){
CacheManager cacheManager = CacheManager.create("ehcache.xml");
Cache cache = cacheManager.getCache(cacheName);
return cache;
}
public static void main(String[] args) {
CacheManager cacheManager = CacheManager.create("src/ehcache.xml");
Cache cache = cacheManager.getCache("SimplePageFragmentCachingFilter");
}通过 main 方法去运行 Cache cache 这里能取到值,但是在Web项目发布到tomcat里 通过页面访问Controller 去调 callCache
方法 Cache cache 是null值,(ehcache.xml配置文件放在默认的src目录下) 以下是Servlet调用的代码, 代码1 处的 cache 是null值。 protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
EhcacheTest eh = new EhcacheTest();
Cache cache = eh.callCache("SimplePageFragmentCachingFilter");// 代码1 request.setAttribute("tvalue", tvalue);
request.getRequestDispatcher("cache.jsp").forward(request, response);
}
通过看源码发现代码2处这里返回的是空值
public Cache getCache(String name) throws IllegalStateException, ClassCastException {
checkStatus();
Ehcache ehcache = ehcaches.get(name);
return ehcache instanceof Cache ? (Cache) ehcache : null;//代码2
}
希望有搞过这个的大神们 帮帮忙~纠结1天了
<filter>
<filter-name>myFirstCache</filter-name>
<filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>
<init-param>
<param-name>cacheName</param-name>
<param-value>myFirstCache</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myFirstCache</filter-name>
<url-pattern>/zhb</url-pattern>
</filter-mapping>去掉的话就能获得值 但是去掉这个 页面缓存就没效果了 难道 页面缓存和后台缓存只能用一个么?