2012-05-04 9 views
0

イントラネットhttpサーバーからバイナリファイルを読み取り、パブリックにダウンロードする必要があります。イントラネットからJSPをダウンロード

SCHEMA

イントラネットのファイルサーバ(Apacheの)= 1 < - ファイルシステムに保存せずに>インターネット承認されたユーザー= 3

ハウツーリリースこの - >公共HTTPサーバ(Apache Tomcatの)= 2 < on server 2

私はJavaで新しいです。

私の英語のために申し訳ありません。

答えて

0

java.net.URL(または別のhttpクライアント)を使用して1から読み取り、それを(3に応答して)印刷します。

(Apache Http ServerまたはNginxでは、リバースプロキシを使用してこれを実現できます)

0

私はこのような状況では二つの方法を考えることができます:

  • は、イントラネットへのインターネット要求をリダイレクトします。
  • JSPページの使用では

:標準タグライブラリを使用して

<% response.sendRedirect("http://intranet_address");%> 

または

<c:redirect url="http://intranet_address"/>。サーブレットページの使用では

response.setStatus(302); 
response.setHeader("Location", "http://intranet_address"); or just 

response.sendRedirect("http://intranet_address"); 
  • サーバ2に保存せずに、サーバ1から読み込まれ、インターネットユーザーに直接送信するために、サーバ2のプロキシの種類を使用し

私はイントラネット上で最初のアプローチを試したことはありませんが、イントラネットアドレスがインターネットユーザーにとって有効ではないという事実を考えれば、それはうまくいくとは思いません。

ここでは、プロキシレイヤを使用する2番目のアプローチしか残っていません。プロキシ関数は多くの方法で実装することができます:シンプルなものはサーブレットの背後にあるBeanで、ファイルサーバー1へのURLを開き、ファイルを読み込んでサーブレット応答ストリームを介してユーザーに送信したり、埋め込まれたHTTPClient。

編集:バイナリファイルをダウンロードする予定なので、JSPは適していません。テキストデータを扱うことを意図しています。バイナリストリームを行うにはServletが必要です。あなたはHttpServletResponseの上、以下のようなものを設定することができます。

resp.setContentType("application/octet-stream"); 
resp.setContentLength(length); 
resp.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 

ので、コンテンツが設定した名前の添付ファイルとして送信されます。

関連する問題