2012-03-16 5 views
0

Java/Springを使用するクライアント/サーバーアプリケーションがあります。クライアントは、httpinvokers経由でサーバーにアクセスし、シリアル化されたオブジェクトを返す要求を行います。シリアル化されたオブジェクトを取得するリモート呼び出しの進行状況を追跡

非常に大きな50mb +シリアル化オブジェクトを引き出す呼び出しがあります。明らかに、この呼び出しには処理に数分かかります。この呼び出しの進行状況を追跡する方法はありますか?たとえば、コールの進行中に転送されたデータの量をテストすることができれば、おそらく別のスレッドを使用すると完璧です。

ありがとう

答えて

2

2つの異なる呼び出しを行う必要があります(2番目は非同期です)。あなたのサーバーは、観察しているオブジェクトに転送されるデータを更新するためのオブザーバーパターンを実装します。サーバーはこの50MBのデータをストリームではなくチャンクで書きます。

observerクラスは、非同期に呼び出す別のクラスになります。観察者は、どのくらいのデータが転送されたかを返信し続けるだろう。

その種類は、添付ファイルのアップロードの進行状況バーでHTML5がリリースされる前にGmailが実装したのと同じ概念です。彼らがしたことは、htmlコントロールを使って、サーバ側で書かれていた添付ファイルをアップロードすると同時に、Flashオブジェクトを使ってそのサーバに呼び出しを送信して、どれだけのデータが保存されているかを確認することでした。

+0

返信ありがとうございますが、私はシングルコールモデルを維持しながら何かをしたいと考えていました。これを行う方法はありませんか? – springcorn

+1

1回の呼び出しでNO –