2011-01-31 12 views
5

パラメータの検証を行うカスタムインターセプタを作成しました。私は、エラーコードを返すことができ、JAXBアノテーション付きクラスをレスポンスボディとして直列化することができます。Apache CXF:インターセプタから障害応答を返す方法

WebApplicationExceptionをスローすると、Responseオブジェクトを内部でシリアル化するための特別な処理はありません(これは意味があります;別のインターセプタによって行われたと仮定します)。

インターセプタチェーンを停止するにはどうしたらよいですか?しかし、JAXBは応答エンティティをシリアル化しますか?

答えて

3

あなたが設定されている場合まあ、少なくともCXF JAX-RSのインターセプタの流れで、:

message.getExchange().put(Response.class, response); 

を他の相が呼び出されたのですかながら...そして、実際のサービスは、呼び出されません。 。

Response response = Response 
    .status(Response.Status.FORBIDDEN) 
    .entity(new ErrorEntity("This is a JAXB object with an error string")) 
    .build(); 

は、私はまた、CXF、JAX-RSフィルターで実行されているいくつかのカスタム認証を持っている:

でそのロジックキックだから私はこのような応答を構築して場所を確認するためにCXFコードに掘られていません認証が正しければパラメータをチェックしたいので、PRE_INVOKEフェーズで実行するパラメータインターセプタクラスを設定します。

+0

しかし、SOAPプロトコルで作業する場合は、この方法では機能しません。誰かがSOAPケースのアップデートを提供してもらえますか? –

関連する問題