2016-07-21 10 views
0

jetty 9.3.8に組み込みJettyサーバーを設定している間、Jetty HttpConnectionの開閉を追跡するためにサーバーコネクタに接続リスナーを追加しています。Webサービスメソッドの実行後にjetty Http Connectionを閉じる方法

現在の要求を処理している突堤スレッド[qtp ..........]がHttpConnectionを開きます。現在のリクエストを終了したら、このHttpConnectionを閉じるように桟橋に通知します。私は、要求を処理してからしばらくして、異なるクライアントからのリスナーからのコールバックで開いているすべての接続の終了を確認します。

リクエストが完了すると、つまり特定のクライアントで完了したら接続を閉じる必要があります。

答えて

0

接続の切断は、HTTP仕様およびプロトコルの責任で行われます。

注:接続に近いが、一般的には/ 2

HTTP対HTTP/1.1対HTTP/1.0のための異なる意味以下、特定のHTTPバージョンであることに注意してください、接続オープン/クローズ処理が交渉されますHTTPクライアントとHTTPサーバーの間に存在し、これらの規則に従う必要があります。サーバーが任意の非HTTP仕様の振る舞いに基づいて接続を任意に閉じることは悪用のために熟しており、仲介者(プロキシ、ルータ、ロードバランサ、キャッシングサーバーなど)に問題を引き起こします。

+0

この場合、HTTP/1.1が使用されます。私はちょうど要求が処理されているスレッドを中断した場合、私は期待どおりにHttpConnectionの終了を参照してください。しかし、Jettyが他のリクエストに対して同じスレッド[qtp ..........]を割り当てると、http接続が閉じていて、httpクライアントでは「no http response」が表示されます。どうすればスレッドの割り込みフラグや要求間の他のデータをクリアすることができますか? –

+0

あなたは接続と要求の処理のその部分をめちゃくちゃにするべきではありません。また、サーブレットコンテナ内のスレッドを中断すると、サーブレット仕様(およびJEE)では100%サポートされず、問題が発生することが保証されます。 –

+0

私は9.2.8から9.3.8にアップグレードしています。以前のバージョンでは、要求が完了した後(居眠りの長いハートビートスレッドの場合)、桟橋のスレッドを中断して、低レベルを閉じるのを助けましたJetty Http Connections。しかし、この出力スレッドで割り込みを除去した後、システムは期待された性能を与えていません。これで私を助けることができるものは何でもあります。 –

0

このヘッダーを要求に設定してみてください。接続:閉じる

関連する問題