2011-02-01 14 views
0

私はジッパーJ2EEアプリケーションを開発中です。アプリケーションサーバーを実行しているリモートマシンのフォルダをJ2EEアプリケーションで圧縮する

アプリケーションは、アプリケーションサーバーが動作しているリモートマシン内のフォルダを圧縮して、各ファイルを1つずつダウンロードする代わりに、他のアプリケーションがこのzipフォルダを直接ダウンロードできるようにする必要があります。

ローカルマシンでこれを行うには、絶対パスを使用してリモートマシンを進める方法がわかりません。私はローカルマシンにビュン用に使用してい
コード:ここで

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

Daniel氏を明確にしてくれてありがとう。私はwebappのルートフォルダを持っている場合、もう1つのこと、どのようにアプリケーションは(リモートサーバー上で)それにアクセスできるようになりますか? – parbi

+0

サーバー自体がファイルを圧縮し、ダウンロードして配信する必要があります。 – Daniel

1

この場合、メッセージドリブンBeanを使用することをお勧めします。 JMSキューの受信メッセージをリッスンするMDBがあります。メッセージにはzipするためのフォルダがあります。メッセージBeanは、MDBに提供されているフォルダを圧縮するヘルパーを呼び出します。私はあなたの質問に利用可能な詳細に基づいています。アプリケーションサーバーが実行されていて、そのサーバーマシン上でジップアクションを実行する必要があります。それは私の意見ではるかに効率的できれいになります。

1

アプリケーションは、アプリケーション・サーバーは、私はあなたがzip圧縮したいディレクトリへのパスについての公正なアイデアを持っていると思います

を実行している ある リモートマシンのフォルダを圧縮する必要があります。したがって、ローカルではなくサーブレットで行ったことと同じことをコードし、zip fielを作成し、HttpServletResponseの出力ストリームにZipの内容を書き込んでダウンロードします。

関連する問題