2011-07-23 16 views
1

WebサービスでCXFを使用しています。 いくつかのクライアントの制限のため、私はすべてのWebフォールトが500の代わりにコード200を返すようにする必要があります。 インターセプタを使用しようとしましたが、フェーズに依存してステータスを無効にしてから応答が空であるか、障害が発生してもステータスは上書きされません。 これを行うにはどのようなアイデアですか? インターセプタを使用すると、正しいフェーズは何ですか? 私はこのようなインターセプタ登録:httpステータスをcxfで上書きする

@org.apache.cxf.interceptor.OutFaultInterceptors(interceptors = { "com.my.prod.core.service.itercept.HttpStatusInterceptor" }) 

、これはインターセプタです:

public class HttpStatusInterceptor extends AbstractSoapInterceptor { 

public HttpStatusInterceptor(){ 
    super(Phase.POST_STREAM_ENDING); 
} 

@Override public void handleMessage(org.apache.cxf.binding.soap.SoapMessage msg) throws org.apache.cxf.interceptor.Fault{ 
    msg.put(SoapMessage.RESPONSE_CODE, "200"); 
}} 

答えて

1

はあなたが

msg.put(SoapMessage.RESPONSE_CODE, 200); 

を試すことができますので、として終わるとIntegerオブジェクトの代わりの文字列。私はそれが整数を期待していると思う。

+0

私は応答コード200を取得しますが、応答自体は空です – FelixDox

+0

はい!信仰の乏しい男です。 – FelixDox

+0

今、このインターセプタをすべてのエンドポイントに登録できますか? – FelixDox

関連する問題