4

アプリケーションサーバー(JBoss)から大きなファイル(ギガバイト)を取得する必要があり、メモリへのロードを回避するために、EJBを介してストリーミングしたいと思います。

アプリケーションサーバーからストリームとしてデータを取り出すことは可能ですか?

4

2 に答える 2

4

EJBとは、リモートBeanを意味しますか?これらのBeanは通常、Javaシリアル化を使用するRMIに基づいています。RMIを使用してデータをストリーミングすることはできません。

ただし、サーブレットとHTTPを使用すると、これは非常に単純になります。大きなファイルを開いFileInputStreamて、バイトごとにサーブレット出力にコピーするだけです。

覚えておくべきこと:

  • 入力ファイルのバッファリングを使用する
  • Content-Lengthクライアントが残りのデータ量を認識できるように、最初にヘッダーを設定します
于 2012-05-24T14:27:36.480 に答える
4

HttpServletを作成し、ファイルをストリーミングします。

update ヘッダーに注意してください。setContentLength()ContentLength-Headerは、のみを受け入れるため、を介して設定することはできませんint

次のように設定する必要があります。setHeader("Content-Length", (long)length)

たぶんこれは役立つでしょう:ServletOutputStreamを使用して、メモリの問題なしにJavaサーブレットに非常に大きなファイルを書き込む

制限はありますが、クライアント側によって異なります。クライアントがファイルをメモリに保持する場合、それは機能しません。

于 2012-05-24T14:26:04.283 に答える