パラメータに基づいてサーブレットによって提供される一連のファイルがあります。サーブレットは、必要なファイルへのストリームを開き、http 応答を読み取り、書き込み、ストリームを閉じます。これで、このファイルを手動で変更して保存できます。次に、このファイルに対するリクエストが来ると、サーブレットはこのファイルへのストリームを開き、それをレスポンスに書き込みますが、コンテンツが変更されたものではなく、古いものであることがわかります。
Tomcat を再起動すると、サーブレットは変更されたコンテンツで応答します。変更した内容を再起動せずに読めるようにすることはできますか?
Tomcat キャッシュではなく、ファイル リーダー自体から読み取られた文字列は変更されません。
ありがとう!
これがサーブレットの内容です-
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");
初めてサーブレットにアクセスした後、ファイルを編集して保存します。ここでも、同じファイルに対して同じサーブレットをヒットしますが、編集されたコンテンツを取得できません。