-1

我有一组文件,它们将由基于参数的 servlet 提供。servlet 打开流到所需文件,读取、写入 http 响应并关闭流。现在可以手动修改并保存此文件。然后下次有对该文件的请求时,servlet 会打开一个指向该文件的流,将其写入响应,但我看到内容不是修改后的,而是旧的。

如果我重新启动 tomcat,servlet 会以修改后的内容进行响应。可以不用重启就可以读取修改后的内容吗?

它不是tomcat缓存,从文件阅读器本身读取的字符串是不变的。

谢谢!

这是servlet的内容-

InputStream fhandle=this.getClass().getClassLoader().getResourceAsStream("responses/"+file);

        if(fhandle!=null){
            Reader fr=new InputStreamReader(fhandle);
            PrintWriter out=resp.getWriter();
            int a=-1;
            FileWriter fos=new FileWriter("copyFile.xml"); //to compare what's read with actual file
            while((a=fr.read())>=0){
                fos.write(a);
                out.write(a);
            }
            out.flush();
            fos.close();
            fr.close();
            fr=null;
            fhandle.close();
            fhandle=null;
            System.gc();
        }
        else
            System.out.println(file+" not found");

第一次点击 servlet 后,我​​将编辑文件并保存它。现在我将再次为同一个文件点击同一个 servlet,并且我不会得到编辑后的内容。

4

1 回答 1

1

相关文件更改时不会动态重新加载资源。资源是源代码树的一部分,随应用程序一起分发。他们预计不会改变。如果您需要这种行为,则您的设计存在严重问题。

于 2013-03-04T09:03:19.240 回答