1

HTTP経由でファイルをアップロードするための内部Javaアプレットを作成しています。組み込みのClientHttpRequestを使い始めました。これは、次々に投稿したい場合にうまく機能しました。複数のスレッドを同時に投稿しようとすると、サーバー側で何かがおかしくなり、小さなファイルをアップロードしている間、大きなファイルの接続がハングします。(大きいのは約10メガのようです)よく調べてみると、このエラーから回復するために設定できるタイムアウトを見つけることができませんでしたが、最終的に、タイムアウトを設定するメカニズムを提供するApacheのClientHttpを見つけました。これに伴う問題は、マルチスレッドプログラムで動作できると主張しているものの、実際には次々に要求を実行するだけであるということです。

リリースには複数のスレッドは実際には必要ありませんが(HttpClientはClientHttpRequestよりも少し速いようです)、同時に送信できる小さなファイルがたくさんあるので、速度をさらに上げることができれば本当に便利です。

セッションCookieを使用して、すでにログインしているユーザーと同じ認証を使用するため、ファイルはHTTP経由で送信されています。

そのため、ClientHttpRequestを使用してタイムアウトを設定する方法、または約束どおりに複数のリクエストを実際に同時に送信するHttpClientのコードを探しています。

私はスレッド間で同じHttpClientインスタンスを共有しており、ドキュメントにあるようにマルチスレッド接続マネージャーを使用しています(これがないと機能しません)。

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

1

コードのサンプルを見ると役立つ場合があります。

アプレット環境に問題があるのか​​もしれません。アプレットビューア、IDE、またはブラウザでテストしていますか? 通常、ブラウザーは同じ Web サーバーへの接続数を 2 に制限するように設定されています。main() を追加してスタンドアロンで実行し、問題が解決するかどうかを確認してください。

于 2008-10-09T21:16:06.050 に答える