JavaWeb 项目,更改本地文件需刷新才有效问题 (tomcat相关) |
您所在的位置:网站首页 › tomcat停不下来 › JavaWeb 项目,更改本地文件需刷新才有效问题 (tomcat相关) |
问题
如果JavaWeb项目需要读取实时更新的本地文件内容,可能遇到必须在更新后手动refresh才能有效的问题。 原因这是由于项目实际上是运行在Tomcat中,而非本地的工作目录。eclipse可以设置成将本地工作目录自动同步到Tomcat相应目录下,但是这需要一定时间。也就是说写好本地文件后,过了一会儿才能同步到Tomcat,前端真正读取的文件目录才能是更新后的结果。 解决方案一网上的经典解决办法是将项目打包成war包,部署到Tomcat上运行(这样就不存在本地工作目录和实际运行目录不一致的情况了)。具体操作百度里很详细,但实际操作起来,不知是内存不够还是什么原因,Tomcat运行项目时总是闪退。 解决方案二(问题仍然存在,但有所改善)问了老师,另一种可供参考解决的办法是,更新文件时不更新本地工作目录的文件,而是直接实际目录下更新。 那么问题来了,如何获得tomcat中运行的实际目录呢? 设置tomcat首先确保tomcat设置如下图: 双击server中的tomcat(或右键打开),勾选如图选项: 然后在任意jsp中加上如下java代码: 运行该jsp后,在eclipse控制台即可查看tomcat绝对路径 问题其实仍然存在,但有所改善结果是,更新所需的速度快了很多,但是频繁反复进入需要读写本地文件的页面时,仍然有更新不及时现象,甚至如果更改了代码,会出现报错。 初步推断,报错的原因是,修改了代码后,eclipse检测到本地工作目录有更新,于是自动将本地工作目录同步到tomcat。我们刚才把文件写在了tomcat而非本地,如果本地没有同名文件,则同步时tomcat中的该文件也会被删除。 但是我们代码本身就包含在tomcat中写该文件的步骤呀!结合更新不及时现象,可能是这段代码尚未完成,页面已经加载出来了,发现没有读到它要读的文件,于是就报错了。 如何控制保证页面加载的过程完全在写完文件后执行呢,可以把代码写在initJsp函数中(在HTML的外面),但是这样的缺点是jspInit函数中无法使用request。 可以说目前还没有找到完美的解决方法吧。是否javaweb中读取实时更新的本地文件,本身也是不值得提倡的?更好的方式可能是直接传值,而非用读写文件的方式中转。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |