基本的に、2回目の接続が行われるまで接続を保持し、最初の接続の保持を停止するように指示するサービスを作成したいと思います。
すべてのデフォルト設定(Tomcatおよびコネクタ)でのNIOHttpコネクタの使用。
スレッド(tomcat aio docの「messageSender」クラスによく似ています)を使用して、最初の応答を保持し、5秒ごとに文字を書き込み/フラッシュします。これは正常に機能しています。スレッドがそれを保持し、キューで解放します。唯一の問題は、最初の接続を閉じるまで、サービス('event'メソッド)が(2番目の接続の'begin'イベントに対して)2番目の呼び出しを受け取らないことです。
繰り返しますが、これが起こることです:
接続1->tomcatは、myService.event(event);を呼び出すスレッド'http-nio-8081-exec-2'を作成します。
myService.eventは、「myDaemonThread」への応答を提供します(これは参照を保持し、5秒ごとに応答に書き込みます)。メソッドを終了します。
'myDaemonThread'は、待機に "synchronized(this){this.wait(5000);}"を使用します(最初はThread.sleep()を使用していましたが、これを機能させるために、wait()に変更しました)
接続2->開始されましたが、myService.eventを呼び出すスレッドがありません
接続1がブラウザで停止すると、TomcatはmyService.event(event.END)を呼び出すスレッド「http-nio-8081-exec-4」を作成します。メソッドを終了します。
tomcat(現在または以前に??を作成し、わかりません)スレッド'http-nio-8081-exec-6'は、接続2に対してmyService.event(event.BEGIN)を呼び出します。
......残りは重要ではありません。
だから、これはNIOを使用する目的全体を打ち負かすようです...誰かがこれが起こっている理由を知っていますか?