在was上部署应用程序之后出现的问题

各位好!
由于工作需要我要写个定时从外网获取数据的代码并将这些数据存入特定文件中,这样会降低用户访问门户时,门户从外网中取得数据的时间。
如天气预报的数据。在本机xp下的tomcat中正常应用,隔两个小时就会取外网的数据并于D盘中img文件夹中生成tq.txt文件,该文件包含所取外网数据。
但当我把这个web程序打成war包发布到was上去时,除了启动这项程序时它会去取外网数据外,在2个小时的周期内,它就算去取这些外网数据,却不会删除该文件,都会在该tq.txt已有数据后再写上数据,这样就导致了该文件里的数据很多。而我写的程序是判断如果该img文件夹内有该tq.txt文件时则会删除该文件,重新生成并写入数据。
请问哪位知道原因?

[b]问题补充:[/b]
但我在tomcat中调用的时候,是不会出现那种情况的啊,我先试试你们的意见,希望有效果

4个回答

[quote]但当我把这个web程序打成war包发布到was上去时,除了启动这项程序时它会去取外网数据外,在2个小时的周期内,它就算去取这些外网数据,却不会删除该文件,都会在该tq.txt已有数据后再写上数据,这样就导致了该文件里的数据很多。而我写的程序是判断如果该img文件夹内有该tq.txt文件时则会删除该文件,重新生成并写入数据。[/quote]
我想应该是你的应用在你从外网取数据时仍然打开了文件(造成锁定)而无法真正删除文件。
解决方案:
在从外网获取数据时,在应用中关闭tq.txt,然后再删除。

你的控制代码呢?

File.exists()

PS:
可以采用Roll File的方式。每次产生一个新的文件,到一定时候再覆盖最老的。也不失一种方案。

立即提问