與針織/ JAX-RS 2響應體干擾,我有以下堆棧一個REST API防止Tomcat的從HTTP錯誤狀態4XX或5XX
- 澤西2/JAX RS 2.0
- Tomcat的7.0。 47
- 傑克遜2
我的目標是當出現錯誤時有一個自定義響應體。我希望能夠向客戶端發送一個解釋,以便更容易地進行調試。
首先,我試圖用@Context HttpServletResponse
並設置HTTP狀態代碼存在,但它是由球衣忽略(這是正常的行爲,但是這超出了我的理解)
然後我tryed使用WebApplicationException
這樣的:
@GET
@Path("/myapi")
public BaseResponse getSomething() {
BaseResponse b = new BaseResponse();
if(error) {
b.setStatusDescription("reason for error");
throw new WebApplicationException(Response.status(Response.Status.CONFLICT).entity(b).build());
}
//add content to BaseReponse
return b
}
但Tomcat的返回我的財產以後這樣的:
<html>
<head>
<title>Apache Tomcat/7.0.47 - Error report</title>
<style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22p
這是標準的Tomcat HTML輸出C通過我希望返回的響應身體的長度(.entity(b)
- 長度b
)應對。所以它被認可,但Tomcat只是用它自己的錯誤頁面覆蓋它。
作爲一個方面說明我還試圖只是相同的結果返回的響應:
return Response.status(Response.Status.CONFLICT).entity(b).build()
那我怎麼告訴Tomcat的離開我,讓我自己反應過來嗎?
澤西調用'HttpServletResponse.sendError()' - 和因此調用servlet容器的'誤差page'機構-似乎違反JAX-RS 2的3.3.3節。0,它表示返回一個'Response'「導致一個實體主體映射到'Response'的實體屬性中。 – Mike