2

ContainerRequestFilterとを実装する独自のロギングフィルターを作成していContainerResponseFilterます。応答が失敗した場合にのみ要求エンティティを出力したい。応答ステータスコードは404、500です。

しかし、ContainerResponseFilter()のフィルターメソッドでrequest.getEntity()またはrequest.getEntityInputStream()を実行すると、空の文字列が表示されます。

ジャージは、リソースレベルでコンテンツを読み取った後、コンテンツを削除するようです。

4

1 に答える 1

0

リセットできない入力ストリームからエンティティを読み取る必要があります(関連するインフラストラクチャはエンティティのコピーを保持しません)。request.getEntityInputStream()したがって、入力ストリームは以前に読み取られているため、を実装するクラスを呼び出すと、何も存在しないはずですContainerResponseFilterLoggingFilterが自動的に機能します。しかし、あなたが言ったように、それをカスタマイズしたいのであれば、もちろんロギングをカスタマイズするためのコードを追加して、それに似た実装を書く必要があります。

于 2013-01-04T09:11:19.537 に答える