Java 当WEB-INF中有大量文件时,Tomcat Webapp启动缓慢

Java 当WEB-INF中有大量文件时,Tomcat Webapp启动缓慢,java,apache,tomcat,web-applications,web-inf,Java,Apache,Tomcat,Web Applications,Web Inf,我有一个Webapp,在WEB-INF文件夹下有很多文件(1000个)。当它启动或重新启动时,即使Jar和TLD扫描已关闭,也需要较长时间>10秒。 我甚至创建了一个定制的JarScanner类,它什么都不做,没有任何区别 当上下文启动时,Tomcat中还有什么东西会扫描该文件夹?我能做些什么吗?如果这些文件直接位于WEB-INF文件夹中(或仅位于一个文件夹中),操作系统可能会花时间来理解该文件夹。许多操作系统无法很好地处理单个文件夹中的1000个文件。因此,它可能不会扫描任何内容,而只是打开目

我有一个Webapp,在WEB-INF文件夹下有很多文件(1000个)。当它启动或重新启动时,即使Jar和TLD扫描已关闭,也需要较长时间>10秒。 我甚至创建了一个定制的JarScanner类,它什么都不做,没有任何区别


当上下文启动时,Tomcat中还有什么东西会扫描该文件夹?我能做些什么吗?

如果这些文件直接位于WEB-INF文件夹中(或仅位于一个文件夹中),操作系统可能会花时间来理解该文件夹。许多操作系统无法很好地处理单个文件夹中的1000个文件。因此,它可能不会扫描任何内容,而只是打开目录

你在用什么操作系统?您可能还想保存一个压缩的WAR文件,而不是“爆炸”整个webapplication目录?如果我没记错的话,可以通过在server.xml中设置
元素的unpacwars属性来实现:

<Host name="localhost" unpackWARs="false" ...>

另外,尝试将文件分离到许多不同的文件夹中,或者更好地,在webapplication目录之外。特别是如果它们只是数据文件,那么让它们远离tomcat可能会更容易


最后,作为对您评论的回复,这可能会告诉您,您已经成功地用启动时间换取了易于维护(因为您声明文件更易于维护)

另一个选项是在webapp中添加一个名为类似数据的旧版本,并在web.xml中为其添加一个安全约束,例如:


保护
/资料/*
数据
数据
注意:应在tomcat-users.xml或用户数据库(如果已设置)中设置适当的用户和角色


通过这种方式,文件夹不会被扫描,并且可以通过标准访问进行安全保护。

为什么需要1000个文件。这些文件是什么类别的?如果它们不是类,为什么不能将其放入数据库中呢?它们是数据文件(不是类)。此实例文件更易于维护。谢谢。我会把它们放在webapp文件夹之外。我以前做过这件事,但我认为在一个地方可能更整洁,然后发现tomcat(尽管我相信是Jasper)扫描了整个文件夹结构。
<security-constraint>
    <web-resource-collection>
        <web-resource-name>secure</web-resource-name>
        <url-pattern>/DATA/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>data</role-name>
    </auth-constraint>
</security-constraint>
<security-role>
    <role-name>data</role-name>
</security-role>