繁体   English   中英

当WEB-INF中有许多文件时,Tomcat Webapp启动缓慢

[英]Slow Tomcat Webapp start when lots of files in WEB-INF

我有一个Webapp,其中WEB-INF文件夹(1000个)下有很多文件。 即使关闭Jar和TLD扫描,启动或重新启动时也要花费10秒以上的长时间。 我什至创建了一个自定义的JarScanner类,该类什么也不做,没有任何区别。

当上下文启动时,Tomcat中还有什么扫描该文件夹的,我对此可以做什么?

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

您在什么操作系统上? 您可能还想尝试保留一个压缩的WAR文件,而不是“分解”整个Web应用程序目录? 如果我没有记错的话,可以通过在server.xml中设置<Host>元素的unpackWARs属性来完成:

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

另外,请尝试将文件分成许多不同的文件夹,或者甚至最好在Web应用程序目录之外。 特别是如果它们只是数据文件,则使它们远离tomcat可能会更容易。

最后,作为对您的评论的答复,这可能表明您已经成功地交换了启动时间以简化维护(因为您声明文件更易于维护)

另一种选择是在Web应用程序中添加一个名为DATA之类的较旧版本,并在web.xml中为其添加安全约束,例如:

<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>

请注意,应该在tomcat-users.xml或用户数据库(如果已设置)中设置适当的用户和角色。

这样就不会扫描文件夹,并且可以安全地进行标准访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM