現在、Jerseyライブラリを使用してJavaでRESTful Webサービスを開発中です。Java WebサービスHttpServletRequestWrapper問題:IllegalStateException
セキュリティ上の理由から、Amazons Simple Storage Serviceに似たカスタム認証が必要です。しかし、これは、身体のMD5ハッシュを計算して(もしあれば)、要求を認証する必要があります。
これまでのところ、私はカスタムオーセンティケータとレルムを使用し、それらを自分のコンテキストに接続しました。 ハッシュを計算しようとすると、本体が一度しか読み取れないため、最初に要求自体を使用してIllegalStateExceptionが発生しました。
問題を調査した後、私はHttpServletRequestWrapper内でリクエストをラップしようとしましたが、これまで成功していませんでした。私の領域内 http://forums.oracle.com/forums/thread.jspa?threadID=2156814&tstart=0
、私は認証を行う場所、私が最初にそうようにラッパーを作成しています:その後、
MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
私は
私は基本的にここに示すようなラッパーを使用していますrequestWrapper を使用してMD5を計算し、最終的に
request.getRequestDispatcher("/*").forward(requestWrapper, response);
proceそれを転送していますssingが正常に動作しますが、私はその後、このようなエラーが表示されます。(私はラッパーですべてを使用せずに得たように)前に呼び出されるgetReaderまたはのgetInputStreamのない言及がない
Servlet.service() for servlet Jersey REST Service threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at com.sun.jersey.spi.container.servlet.WebComponent$Writer.finish(WebComponent.java:285)
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:241)
注こと。
今、私は私がここで何か間違ったことをやっている確信しているが、私は本当にこのことについて多くを知らないと、誰かがここで私を助けることができれば、本当に喜んでいるだろう:)
よろしく、 ルーカス
例外に*原因*が記録されていますか? –
私は、あなたがjava.lang.IllegalStateExceptionの後で通常どんなものになるかを意味すると思います。そして、いいえ、それはIllegalStateExceptionの後に原因がなければそのように見えます。 – Luksurious
処理中の任意の時点でレスポンス出力ストリームに直接アクセスしていますか? –