1
멀티 파트 데이터를 읽고 파일을 임시 위치에 저장하는 서블릿이 있습니다. 그런 다음 ejb stateless 서비스를 호출합니다.이 서비스 중 하나는 파일 경로를 문자열 인수로 사용합니다. 서비스에서 여러 가지 이유로 예외에서 파일을 삭제하는 방법
나는- 우편/타르/Z 파일로 파일 형식을 확인합니다. 유효한 아카이브가 아닌 경우 RuntimeException을 발생시킵니다.
- 그런 다음/untar/unZ을 압축 해제하고 특정 xml 파일이 있는지 확인하십시오. 파일이 아카이브에 없으면 RuntimeException을 던져
- 그런 다음 JAXB를 사용하여 XML을 언 마샬링합니다. 어떤 이유로 인해 unmarshal이 실패하면 RuntimeException을 던집니다.
- 그런 다음 비 정렬 화 된 개체를 데이터베이스에 저장합니다.
- 그런 다음 클라이언트로 성공을 보내기 전에 파일을 삭제합니다.
서비스의 여러 위치에서 file.delete()를 호출하지 않아도 어떻게 효율적으로 수행 할 수 있습니까?
다음은 내가 같은이내가 거래에 대해 잘 모르는의 압축을 풉니 다
함께 Unzipper 에서 그것을ZipEntry entry = zipFile.getEntry("descriptor.xml");
if(entry == null) {
file.delete();
throw new RuntimeException("descriptor xml not found");
}
을
... service() {
extractDescriptor(filePath);
}
... extractDescriptor(String filePath) {
String extension = filePath.substring(filePath.lastIndexOf(".") + 1).toLowerCase();
switch(extension) {
case "zip":
unzipper.extractFromZip(filePath);
break;
case "tar":
untar.extractFromTar(filePath);
break;
case "z":
untar.extractFromZ(filePath);
break;
default:
new File("filePath").delete();
throw RuntimeException("invalid extention");
}
}
을 작성하는 방법을 일부 원시 코드입니다. 아무도 나를 도울 수 있습니까?
try catch에 5 단계를 모두 포함하고 finally에서 delete를 실행하지 않는 이유는 무엇입니까? try-catch-finally 블록 외부에서 성공을 거두십시오. –
그래, 그 생각이 있었지만 시도와 잡기가 코드를 추악하게 만들 것이며 트랜잭션을 사용하는 더 좋은 방법이 있다면 생각했습니다. –