簡體   English   中英

Apache CXF:如何從攔截器返回失敗響應

[英]Apache CXF: how to return failure response from an interceptor

我編寫了一個自定義攔截器來進行一些參數驗證。 我希望能夠返回錯誤代碼並將帶有JAXB注釋的類序列化為響應主體。

如果我拋出一個WebApplicationException,它沒有任何特殊的處理來序列化里面的Response對象(這是有道理的;我認為這是由另一個攔截器完成的)。

我應該如何停止攔截器鏈但仍然有JAXB序列化響應實體?

好吧,至少在CXF JAX-RS攔截器流程中,如果你設置:

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

...然后實際服務不會被調用,而其他階段會被調用。 沒有深入研究CXF代碼,看看這個邏輯在哪里發揮作用。

所以我建立了這樣的響應:

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

我還在CXF JAX-RS過濾器中運行了一些自定義身份驗證,我只想在身份驗證正常時檢查參數,因此我將參數攔截器類設置為在PRE_INVOKE階段運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM