2011-02-01 1 views
0

나는 지퍼 J2EE 응용 프로그램을 작성 중입니다. 이 응용 프로그램은 다음을 필요로합니다 :J2EE 응용 프로그램을 통해 응용 프로그램 서버를 실행하는 원격 컴퓨터의 폴더 압축하기

응용 프로그램은 응용 프로그램 서버가 실행중인 원격 컴퓨터의 폴더를 압축하여 다른 응용 프로그램이 각 파일을 하나씩 다운로드하는 대신이 압축 폴더를 직접 다운로드 할 수 있도록해야합니다.

로컬 컴퓨터에서 절대 경로를 사용하여이 작업을 수행 할 수 있습니다. 원격 컴퓨터를 사용하는 방법을 모릅니다. 내가 로컬 컴퓨터에서 압축에 대한 사용하고
코드 : 여기

File file = new File(myFolderPath);  
int index = myFolderPath.lastIndexOf("/"); 
String folderName =myFolderPath.substring(index); 
String folderPath = myFolderPath.substring(0, index); 
File outFolder = new File(folderPath + folderName + ".zip"); 
if (!outFolder.exists()) { 
zip(file, outFolder); 
} 

myFolderPath은 문자열입니다. URL이라면 어떻게해야합니까? 미리 감사드립니다.

답변

1

URL은 디렉토리 목록을 허용하지 않으므로 불가능합니다. 서버에서 절대 경로가 필요하거나 URL을 http://server/을 webapp의 루트 폴더로 바꾸면 서버의 절대 경로로 변환 할 수 있습니다.

+0

다니엘을 분명히 해주셔서 감사합니다. 한 가지 더 webapp의 루트 폴더가 있다면 어떻게 응용 프로그램이 원격 서버에 액세스 할 수 있습니까? – parbi

+0

서버 자체에서 파일을 압축 한 다음 다운로드하여 제공해야합니다. – Daniel

1

내 제안은이 경우에 메시지 구동 Bean을 사용하는 것입니다. JMS 대기열에서 수신 메시지를 수신 대기하는 MDB가 있습니다. 메시지에는 압축 폴더가 있습니다. 그런 다음 메시지 빈은 MDB에 제공된 폴더를 압축하는 도우미를 호출합니다. 나는 당신의 질문에서 가능한 세부 사항에 기초하고 있습니다. 앱 서버가 실행 중이고 해당 서버 시스템에서 압축 작업이 수행되기를 원합니다. 제 생각에는 훨씬 더 효율적이고 깨끗합니다.

1

응용 프로그램은 응용 프로그램 서버가 나는 당신이 압축을 원하는 디렉토리 경로에 대한 공정한 아이디어가 생각

실행 입니다 원격 시스템에서 폴더를 압축한다. 그래서 당신이 로컬로 서블릿에서했던 것과 동일한 것을 코드화하고, zip fiel을 만들고, HttpServletResponse의 출력 스트림에 zip의 내용을 써서 다운로드하십시오.

관련 문제