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

时间:2015-05-01 12:53:03

标签: java apache tomcat web-applications web-inf

我在WEB-INF文件夹(1000s)下有一个包含大量文件的Web应用程序。当它启动或重新启动时需要很长时间>即使Jar和TLD扫描关闭,也会持续10秒。 我甚至创建了一个自定义的JarScanner类,它没有任何作用,没有任何区别。

在启动上下文时,Tomcat还会扫描该文件夹,我可以对此做些什么吗?

2 个答案:

答案 0 :(得分:0)

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

你在做什么操作系统?您可能还想尝试保留压缩的WAR文件,而不是&#34;爆炸&#34;整个webapplication目录?如果我没记错的话,这可以通过在server.xml中设置<Host>元素的unpackWARs属性来完成:

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

此外,尝试将文件分成许多不同的文件夹,或者更好的是,在webapplication目录之外。特别是如果他们只是数据文件,可能更容易让他们远离tomcat。

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

答案 1 :(得分:0)

另一种选择是在webapp中添加一个名为DATA的旧版本,并在web.xml中添加一个安全约束,例如:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxx.calculator/com.xxxxx.calculator.ResultActivity}: java.lang.NullPointerException

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

通过这种方式,文件夹不会被扫描,并且在标准访问时也是安全的。