2014-12-03 107 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(); 
    } 
}