2012-03-08 9 views
0

매우 이상한 문제가 있습니다. 내 웹 응용 프로그램에서 파일 업로드를 처리하기 위해 commons-fileupload (1.2.1)을 사용하고 있습니다 (톰캣 7.0.23에서 호스팅되고 distributable 플래그가 설정 됨). DiskFileItemFactory (FileCleaningTracker)의 DiskFileItem 인스턴스를 얻은 후에는 write 메서드를 사용하여 파일을 저장합니다 (DiskFileItemFactory이 스트리밍 될 때 파일을 디스크에 쓸 필요가있을 때 사용하도록 구성된 동일한 디렉토리에 있음) . 문제는이 새 파일 (명시 적으로 생성되고 이름이 지정됨)이 요청 처리가 완료된 후 삭제된다는 것입니다. 상상할 수 있듯이 파일에 다시 액세스해야 할 때 문제가 발생합니다. 그들이 관련이있을 수처럼 보일요청이 완료되면 Tomcat이 파일을 삭제 하시겠습니까?

둘 사항이

  • 문제의 디렉토리는 서블릿 컨텍스트에서 기본 임시 디렉토리 아니며, 톰캣 디렉토리 아래 그 것이다.
  • 다른 코드 경로에서 즉시 다른 파일이 아닌 해당 파일을 복사하고 THAT 복사본이 삭제되지 않습니다.
  • 요청이 완료되기 전에 I chmod a-w 파일이 있어도 요청이 완료되면 여전히 삭제됩니다.

도움 주셔서 감사합니다.

답변

0

그리고 범인은? 9 년 전부터 "정리"를하고있는 떠돌아 다니는 finalize 방법.

+1

도덕 : finalize() 메소드를 작성하지 마십시오! ... 그리고 필요하다면 마침내 {} 블록에서 리소스를 정리하십시오. 어디에서 발생했는지 볼 수 있습니다. – EJP

+1

@EJP 당신은 합창단에게 설교하고 있습니다. 나는 그 코드를 작성하지 않았지만 그것을 삭제하게되어 기뻤다. –

관련 문제