2012-04-11 9 views
0

Servlet 3.0 async apiの内部では、サーブレットがスレッドのマルチプレクサプールによって処理されるように指定されています。これでgetCurrentSessionの動作は何ですか?それはマルチプレクサスレッドが怠惰のために破壊されるまでセッションを開いたままにしますか?asyncサーブレットでのHibernate getCurrentSessionの動作

答えて

2

サーブレットリクエストは常にスレッドプールによって処理されているため、サーブレット3.0では新しいものは導入されていません。 getCurrentSession()から得られたスレッドバインドSessionは、トランザクションコミット後に(デフォルトで)クローズされるため、トランザクション管理を正しく実装する限り、スレッドプールに問題はないはずです。

Servlet 3.0の新しい点は、非同期要求処理のさまざまなフェーズを異なるスレッドで処理できることです。したがって、これらのフェーズでスレッドバインドSessionを使用することはできません。ただし、スレッド処理されたSessionを1つの処理フェーズで使用することはできます。

また、非同期処理では、ビューを開いているセッションで問題が発生します。

ただし、これらの問題はすべて、非同期APIを使用しない限り問題にはなりません。

関連する問題