0

Java/Spring を使用するクライアント/サーバー アプリケーションがあります。クライアントは httpinvokers を介してサーバーにアクセスし、シリアル化されたオブジェクトを返す要求を行います。

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

ありがとう

4

1 に答える 1

2

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

オブザーバー クラスは、非同期で呼び出す他のクラスになります。オブザーバーは、転送されたデータの量を返し続けます。

HTML5 が添付ファイル アップロード プログレス バーでリリースされる前に Gmail が実装したのと同じ概念です。彼らが行ったことは、html コントロールを使用して、サーバー側で書き込まれていた添付ファイルをアップロードすると同時に、フラッシュ オブジェクトを使用してそのサーバーに呼び出しを送信し、保存されたデータの量を確認することでした。

于 2012-03-16T23:59:16.650 に答える