实际上,您的发现相当不错,并且您已经有90%回答了您的问题。这两个事实:
- “似乎停滞发生在oacloader.WebappClassLoaderbase中”
- “使用Jetty作为容器运行时,不会发生这种情况。”
表明这将是与Tomcat相关的问题,因为:
o.a.c.
代表org.apache.catalina
- 您的代码在另一个容器上运行良好。(码头)
您还观察到,此问题是在15秒钟的空闲时间后发生的。这完全符合Tomcat的默认
checkInterval设置,即:
如果已将可重载设置为true,则检查修改的类和资源之间的秒数。默认值为15秒。
简而言之:当前您的
reloadable标志为ON,并且Tomcat尝试重新加载您的类,这在开发过程中很方便,但是在任何其他情况下都是不可接受的。但是,关闭它的方法不是通过Spring-
boot。
解决方案:
您需要找到您的context.xml / server.xml,您将在其中找到如下所示的
Context定义:
<Context ... reloadable="true">
删除
reloadable标志,您已经解决了问题。该文件本身可以位于$ CATALINE_HOME / conf的$ CATALINA_base /
conf中,但实际上,要查找是否要使用某些IDE为您管理Tomcat,这些位置可能有些棘手。
如果使用Spring-boot嵌入式Tomcat:
您可以用来 *** 纵Tomcat设置的类是:
EmbeddedServletContainerCustomizer。
通过此 *** 作,您可以添加
TomcatContextCustomizer(
addContextCustomizers),以便可以调用
setReloadable上下文本身。
我没有看到任何原因使Spring-boot需要将此标志设置为true。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)