问题描述
我们在 Windows 2016 Server 上使用 Apache TomEE plus 8。我们创建了一个包含 30 万多个文件的虚拟目录。 据观察,TomEE 需要一个多小时才能启动。如果删除虚拟目录,TomEE 将在大约 2 分钟内启动。
通过虚拟目录,我们希望向用户提供报告文件的访问权限。 https://MYHOST.com/MYREPORTS/pdfreports/pdffile1.pdf
我们在 Catalina/conf/localhost/ 文件夹下使用了以下 MYREPORTS.xml
<pre>
<Context docBase="d:\MyFiles\MyReports">
<Resources allowLinking="false" />
</Context>
</pre>
注意:文件夹 d:\MyFiles\MyReports 有“pdfreports”子文件夹,但“pdfreports”是网络共享位置的软链接。
不确定这里缺少什么。试图获得更多的日志信息,但没有得到线索。请分享您的想法。当我们检查时,TomEE 在启动期间忙于以下线程堆栈跟踪。似乎它正在扫描目录中的所有文件,并且扫描所有 300K+ 文件必须花费时间:-(.
<pre>
"localhost-startStop-1" - Thread t@50
java.lang.Thread.State: RUNNABLE
at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
at java.io.File.isDirectory(File.java:849)
at org.apache.openejb.util.AnnotationFinder.scanDir(AnnotationFinder.java:213)
at org.apache.openejb.util.AnnotationFinder.scanDir(AnnotationFinder.java:218)
at org.apache.openejb.util.AnnotationFinder.file(AnnotationFinder.java:204)
at org.apache.openejb.util.AnnotationFinder.<init>(AnnotationFinder.java:133)
at org.apache.openejb.util.AnnotationFinder.<init>(AnnotationFinder.java:112)
at org.apache.openejb.config.DeploymentLoader.checkAnnotations(DeploymentLoader.java:2050)
at org.apache.openejb.config.DeploymentLoader.discoverModuleType(DeploymentLoader.java:1971)
at org.apache.openejb.config.DeploymentLoader.discoverModuleType(DeploymentLoader.java:1905)
at org.apache.openejb.config.DeploymentLoader.load(DeploymentLoader.java:151)
at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2303)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1188)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1125)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
</pre>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)