プッシュメカニズムにDWRを使用するWebアプリケーションを開発しています。PrintWriter
のクラスがHttpServletResponse
エラーで設定されているのを確認しました。ロジック:dwrのカスタムフラッシュメソッド:
PrintWriter out = reponse.getWriter(); public boolean flush(){ out.flush(); if(out.checkError()){ / *応答の送信中にエラーが発生したため、次のプッシュで応答を再送信します* / falseを返します。 } /*応答は正常に送信されました*/ trueを返します。 }
奇妙なことに、エラーのあるPrintWriterはクライアント側に応答を正常に送信しますが、上記のコードではout.checkError()がtrueを返すため、応答はクライアントに再送されます。
さらに観察すると、この種の不正行為が存在するたびに次のステートメントがログに記録されることがわかりました。WARN:oejh.HttpGenerator:余分なコンテンツを無視する
これはブラウザの種類に依存し、これはChrome、Firefoxで発生しており、Opera、IEでは発生していません。
- これ(HttpGenerator:余分なコンテンツを無視する)はPrintWriterに何かを更新しますか?
- PrintWriterがエラーフラグを設定するとき?
- ブラウザはこの種の応答にどのように応答しますか(HttpGenerator:余分なコンテンツを無視します)?
サーバー:jetty-7.6.3 DWR:dwr-3.0.0-RC3-dev-425