6

次のようなデザインがあります。

ここに画像の説明を入力

Tomcat にインストールされたサービスには、コアに存在する (RMI サーバー実装) を使用してデータベースからデータを受け取るメソッド getDatabaseData(String request) (RMI クライアント) があります。

Tomcat 内にインストールされているサービスが xml ファイルを作成し、クライアントに送信することを実行したいと考えています。

私たちは次のような解決策を考えました:

  • 最初に getDatabaseData(String request) を使用して tomcat で xml ファイル全体を作成し、ユーザーはそのリンクを使用して参照を取得し、データのダウンロードを開始します。

しかし、このファイルのサイズが非常に大きいため、このソリューションは有益ではありません。これを行うと、Tomcat サーバーのストレージがすぐにいっぱいになってダウンしてしまうため、リアルタイムのストリーミング データのソリューションを探しています。ファイル全体を作成する代わりに、ユーザーに。データが CORE から受信されているときに、xml テンプレートでユーザーにデータを送信する方法を意味します。

何か考えはありますか?

(ちなみに、Tomcat 上の Web サービスは Spring MVC と Spring Security を使用して作成されています)

4

2 に答える 2

0

@Noofiz コードを使用して、この機能をテストするためにこのコードを書きました。

ファイルから読み取り、オンタイムでユーザーに送信し、ユーザーにファイルをダウンロードさせることができます!

1) 'End!' を印刷しました。バッファリング中にファイルが時間通りにユーザーに送信され、最初にバッファリングを終了してからユーザーに送信されないようにするためです。

2)ダウンロードしたファイルとメインファイルのmd5をチェックしたところ、それらは類似していました。

ここに私のサーブレットコードがあります:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    InputStream is = new FileInputStream("/home/Mehdi/Desktop/log.log");
    response.setContentType("application/octet-stream");
    ServletOutputStream out = response.getOutputStream();
    int i;
    byte[] buffer = new byte[10 * 1024];

    while ((i = is.read(buffer)) != -1) {
        if (i != 10240) {
            for (int j = 0; j < i; j++) {
                out.write(buffer[j]);
            }
        } else {
            out.write(buffer);
        }
    }
    System.out.println("End!");
}
于 2013-04-11T10:56:25.480 に答える