2014-12-03 109 views
-1

我想從我的REST風格的Web服務發送狀態響應XML,以防它與任何有效的URL不匹配。默認情況下,它會將404響應發送回客戶端。有什麼辦法可以實現?REST風格的Web服務:處理無效的URI - 404錯誤

我正在使用Jersey來實現REST風格的Web服務。

+0

404頁面通常設置在Web服務器級別(Tomcat,IIS ...)。 – lcryder 2014-12-03 12:08:52

回答

0

Jersey有能力實現泛型異常處理程序控制器。基本上,如果特定的運行時異常未被捕獲,則執行這些控制器。

以下控制器處理Jersey無法找到其他控制器的異常。

package com.example.controllers; 

import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.ExceptionMapper; 
import javax.ws.rs.ext.Provider; 

import com.sun.jersey.api.NotFoundException; 

@Provider 
public class NotFoundExceptionHandler implements ExceptionMapper<NotFoundException> { 
    @Override 
    public Response toResponse(NotFoundException ex) { 
     return Response.status(Response.Status.NOT_FOUND).build(); 
    } 
} 

另外,通過這種方式來處理任何運行時異常通常是個好主意。示例如下。

package com.example.controllers; 

import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.ExceptionMapper; 
import javax.ws.rs.ext.Provider; 

@Provider 
public class GenericExceptionHandler implements ExceptionMapper<Throwable> { 
    @Override 
    public Response toResponse(Throwable ex) { 
     return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); 
    } 
}