[英]Tomcat Servlet: 404 status when src/main/webapp/WEB-INF and no error when root/WEB-INF
[英]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.