2016-11-08 13 views
0

私が見つけたように、StringのコントローラはシングルトンですAre Spring MVC Controllers Singletons?Spring MVCコントローラが複数の長いHTTPリクエストを処理する方法は?

問題は、Springが同じマッピングに対して複数の時間のかかるリクエストを処理する方法ですか?たとえば、長い計算や他のサーバーへの接続が必要なモデルを返す場合、同じURLにリクエストを送信しているユーザーが多い場合などです。

非同期スレッド次の要求が維持される前にメソッドを終了する必要があるので、私は解決しないと思いますか?か否か..?

+2

1つのインスタンスがあるということは、複数の要求を同時に処理できないというわけではありません。したがって、次の要求を処理する前に、メソッドを終了する必要はありません。 –

答えて

0

要求はスレッドプール(コンテナ管理)を使用して処理されるため、各要求は独立したコンテキストを持ちます。コントローラがシングルトンであるかどうかは関係ありません。

重要なことは、予期しない動作や競合状態を避けるために、シングルトンインスタンスが要求間で状態を共有してはならないことです。

スレッドプールの容量は、サーバーが同期モデルで処理できる要求の数を定義します。

あなたが非同期的なアプローチをしたい場合は、のような多くのオプションを使用coud:タスクを押すと、スケジューラプロセスを使用するようにキューを使用し

  1. コンテナのスレッドからタスクを処理する独立したスレッドプールを持つ、または
  2. をタスク、または
  3. WebSocketを使用して要求を行い、(1)または(2)を処理に使用し、完了したら通知を受信します。
関連する問題