【发布时间】:2017-01-01 22:57:15
【问题描述】:
我正在将 5 年前的带有 JSP 的 Spring MVC 应用程序移植到 Spring Boot。因此,根据http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitations中的示例,我使用的是“战争”包装。
嵌入式 tomcat 启动。但是日志中充满了缓存警告,如下例所示
2016-08-25 14:59:01.442 INFO 28884 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcat 使用端口初始化:8080 (http) 2016-08-25 14:59:01.456 INFO 28884 --- [main] o.apache.catalina.core.StandardService:启动服务 Tomcat 2016-08-25 14:59:01.458 信息 28884 --- [主要] org.apache.catalina.core.StandardEngine:启动 Servlet 引擎:Apache Tomcat/8.5.4 2016-08-25 14:59:01.531 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/displaytag-1.2. jar] 到缓存,因为在驱逐过期缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 2016-08-25 14:59:01.531 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/decrex-maven- 添加资源0.1.10-SNAPSHOT.jar] 到缓存,因为在驱逐过期缓存条目后可用空间不足 - 考虑增加缓存的最大大小 2016-08-25 14:59:01.531 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/spring-boot- 添加资源actuator-1.4.0.RELEASE.jar] 到缓存,因为在驱逐过期缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 2016-08-25 14:59:01.531 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/validation-api- 添加资源1.1.0.Final.jar] 到缓存,因为在驱逐过期缓存条目后可用空间不足 - 考虑增加缓存的最大大小 2016-08-25 14:59:01.532 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/lucene-backward- 添加资源codecs-5.3.1.jar] 到缓存,因为在驱逐过期缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 2016-08-25 14:59:01.532 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/lucene-queries- 添加资源5.3.1.jar] 到缓存,因为在驱逐过期的缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 ...... 2016-08-25 14:59:05.121 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/lib/jstl-1.2. jar] 到缓存,因为在驱逐过期缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 2016-08-25 14:59:05.139 WARN 28884 --- [ost-startStop-1] org.apache.catalina.webresources.Cache:无法在 [/WEB-INF/classes/commons-logging. properties] 到缓存,因为在驱逐过期的缓存条目后没有足够的可用空间 - 考虑增加缓存的最大大小 2016-08-25 14:59:05.139 INFO 28884 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]:初始化 Spring 嵌入式 WebApplicationContext 2016-08-25 14:59:05.139 INFO 28884 --- [ost-startStop-1] os.web.context.ContextLoader:根 WebApplicationContext:初始化在 7117 毫秒内完成 ...... 2016-08-25 15:02:03.960 INFO 28884 --- [ndardContext[]]] org.apache.catalina.webresources.Cache:后台缓存驱逐进程无法释放 [10]% 的 Context [ ] - 考虑增加缓存的最大大小。驱逐后大约 [9,251] KB 的数据保留在缓存中。我很乐意增加 tomcat 缓存,但我找不到在 Spring Boot 中控制它的方法。请建议!!!
我在下面尝试了安迪威尔金森的建议。还尝试在
EmbeddedServletContainerCustomizer 中使用它
@零件
公共类 ServletContainerCustomizer 实现 EmbeddedServletContainerCustomizer {
私有静态最终日志日志 = LogFactory.getLog(ServletContainerCustomizer.class);
@覆盖
公共无效定制(ConfigurableEmbeddedServletContainer 容器){
if (TomcatEmbeddedServletContainerFactory.class.isAssignableFrom(container.getClass())) {
int 缓存大小 = 256 * 1024;
log.info("自定义tomcat工厂。新缓存大小(KB)为" + cacheSize);
TomcatEmbeddedServletContainerFactory tomcatFactory = (TomcatEmbeddedServletContainerFactory) 容器;
tomcatFactory.addContextCustomizers((上下文)-> {
StandardRoot standardRoot = new StandardRoot(context);
standardRoot.setCacheMaxSize(cacheSize);
});
}
}
}
关于更改缓存大小的消息在日志中,但上面的代码对警告没有影响
【问题讨论】:
-
有一些关于此错误的信息:stackoverflow.com/questions/26893297/… 据我所知,要增加缓存大小,您必须定义
EmbeddedServletContainerCustomizer -
感谢您的想法。我可以访问TomcatEmbeddedServletContainerFactory 的实例。但是没有方法可以帮助控制缓存
标签: tomcat spring-boot