スレッドを無駄にすることなくクライアントに通知する効率的な方法を理解するのに苦労しています。クライアントが CometD サーブレットに接続するときに、クライアントのサーバー側イベントの監視を開始し、利用可能になったときにクライアントに公開したいと考えています。これは、スレッドプールまたはサーブレット スレッドを使用しないもので行う必要があります。私が見るすべての例は、クライアントが発生したイベントとサーバー上のリスナーに関するものです。逆が必要です... Client/ServerSession オブジェクトを自分の機械に渡すだけですか? これは一般的なパターンのようですが、例が見つかりません。
1 に答える
0
Servlet 3.0 Async API を見てください。特に、「自分の機械に渡す」ことができるオブジェクトを返し、サーブレット doGet()/doPost()/etc から返しますServletRequest.startAsync()
。AsyncContext
接続を終了せずに。
その後、データをクライアントに送り返すためのさまざまなパターンがあります。あなたの「独自の機械」は、 から を取得して書き込むことができると思いServletResponse
ますAsyncContext
。もう 1 つの方法は、 doGet()/doPost() メソッドが再度呼び出される原因となる を呼び出すdispatch()
ことAsyncContext
です。
于 2011-06-22T21:58:10.260 に答える