栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Spring Boot 1.2升级到1.5.2之后,Tomcat 8.5启动期间出现FileNotFoundException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Spring Boot 1.2升级到1.5.2之后,Tomcat 8.5启动期间出现FileNotFoundException

根本原因:

根据 Tomcat Wiki
,Servlet 3.0规范要求在服务器启动期间进行Jar扫描。

Tomcat正在使用org.apache.tomcat.util.scan。为此目的使用StandardJarScanner。

来自 StandardJarScanner 的javadoc 。

默认的JarScanner实现 扫描WEB-INF / lib 目录,然后 扫描 提供的类加载器,然后处理类加载器层次结构。此实现足以
满足Servlet 3.0规范的要求, 并提供许多Tomcat特定的扩展。扩展名是:

  • 扫描类加载器层次结构(默认情况下启用)测试所有文件以查看它们是否为JAR(默认情况下禁用)

  • 测试所有目录以查看它们是否是分解的JAR(默认情况下处于禁用状态)

  • 所有扩展 都可以通过配置来控制

解决方案1:特定于Spring Boot。

我们可以 禁用 此jar扫描。

我通过在application-xxx.properties文件中添加以下属性来禁用它。该属性是 特定于Spring
Boot的

# Comma-separated list of additional patterns that match jars to ignore for TLD scanning.    server.tomcat.additional-tld-skip-patterns=*.jar

你可以找到 从Tomcat相似的特性
在这里。

这些属性可用于配置 传统的 tomcat( Spring Boot)应用程序。

解决方案2:特定于Spring

您可以按以下方式禁用 清单 文件的JarScanner 。

@Beanpublic EmbeddedServletContainerFactory embeddedServletContainerFactory() {  return new TomcatEmbeddedServletContainerFactory() {    @Override    protected void postProcessContext(Context context) {      ((StandardJarScanner) context.getJarScanner()).setScanManifest(false);    }  };}

解决方案3:传统的独立Tomcat:

<Context>  ...  <JarScanner scanManifest="false"/>  ...</Context>

请参阅: Jar扫描仪组件



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号