2011-06-26 13 views
1

待機中のリクエストが長い場合(たとえば、処理中のスレッドが別のデータを提供するまでブロックされているなど)、応答が準備されるまでにクライアントが切断されている可能性があります。リクエストを処理するメソッドでこれを発見する方法はありますか?つまり、応答を返さず、桟橋/ジャージーがIO例外を投げるのを見てください。ジャージー:接続が切断されたときの認識方法

+1

サーバがクライアントについて知るようにする方法はいくつかあります。しかし、あなたのケースは[RESTful cookbook](http://books.google.com/books?id=LDuzpQlVuG4C&printsec=frontcover&hl=fr#v=onepage&q=false)の説明として役立つはずです:«POSTリクエストを受け取った場合、新しいリソースを作成し、新しいリソースの表現でステータスコード202(Accepted)を返します。このリソースの目的は、クライアントに非同期タスクの状態を追跡させることです。そのリソースの表現に、要求の現在の状態と、時間の見積もりなどの関連情報が含まれるように、このリソースを設計します。 » –

答えて

0

接続を介して何かを送信しようとするまで、接続がダウンしているとは言えません。失敗すると(IOExceptionを投げます)。

シングルトンEJBにLinkedBlockingDeque(ライブストリームを受信する外部システムのIDによってマップされた)のマップを格納しています。ライブフィードに公開する必要があるイベントが発生すると、そのシングルトンBeanを介してイベントをエンキューします。キューの他端(接続されている場合)は、アイテムが利用可能になるのを待っているJAX-RS Webサービスです。今、キューの代わりに両端キューを使用する理由は、OutputStreamへの書き込みおよび/またはフラッシュ中にクライアントが最も切断された可能性が高いことを示すときにIOExceptionがスローされることがあります。デキューでは、次回の外部システムの接続時に最初に取り出されるように、単にアイテムを戻すことができます。

関連する問題