2017-06-30 82 views
1

我有以下问题,我在C:\Tomcat85\webapps\MyWebApp\Excel\myExcel.xls中编写了一个Excel文件。Tomcat 8.5花费太长时间才能识别新内容

只要我的Java应用程序完成写入文件,就会为用户执行下载以便使用它。这给了一个讨厌的404错误。

如果我等几秒钟并重新加载页面,它会下载所有权利(或者在java中添加五秒钟的睡眠,它的工作原理相同)。

所以,我的结论是,Tomcat需要5秒钟才能认识到这个新的excel文件存在,然后才能够提供服务。

有没有办法让Tomcat更快地执行此任务?也许在web.xml中使用一些配置来以不同方式处理“/ Excel /”文件夹。

Windows 10 64位,Tomcat 8.5,Java 7(可以尝试java8,但我不认为它会有所作为)。

某些代码:

new ExcelExport(remoteHandle, context).execute(outFileName, outMessage); 
// Thread.sleep(5000); 
httpContext.wjLoc = formatLink(outFileName); 
  • 睡眠取决于测试评论或注释。睡了之后,我得到了404,睡眠在5秒内就可以正常工作。
  • httpContet.wjLoc只是执行下载,作为文件的链接。

的wiriting工作正常,因为我看到它准备和写在文件浏览器,但如果我试图通过URL打开它,我会得到相同的404

+2

你可以发布一些示例代码?有可能是你的代码泄漏导致延迟 –

+0

只需添加一些代码,希望它有帮助!并感谢您的关注。 –

回答

1

Resources默认缓存。高速缓存条目重新生效之间的时间间隔(以毫秒为单位)由参数this documentation中引用的cacheTtl参数定义。默认情况下,它的值是5秒。

如果要禁用缓存,只需将cachingAllowed设置为false即可。

+0

谢谢Italo,我尝试了你的想法,但没有奏效。我添加了/META-INF/context.xml,并在里面添加了:“”。然后删除工作文件夹并重新启动tomcat。结果是相同的404。也尝试了cachingAllowed =“false”,但没有改变。让我想到的是,我不想禁用缓存o减少它的TTL,我希望它更快可用。任何其他想法?再次感谢费德里科。 –

+1

@FedericoAlvarez'Context'元素没有'cacheTTL'和'cachingAllowed'参数。 “资源”元素具有。 “资源”元素可以嵌套在“上下文”组件中。如果您没有“资源”元素,请添加它。像''。 –

+0

谢谢Italo!它工作得很好!用这个:''。现在我应该问:这是否有性能问题?因为资源不会被缓存(我将TTL设置为1),对吧?你有什么经验?再次感谢费德里科。 –