我想从我的RESTful Web服务发送状态响应XML,以防它与任何有效网址都不匹配。默认情况下,它会将404响应发送回客户端。有什么办法可以实现吗?
我使用Jersey来实现RESTful Web服务。
答案 0 :(得分: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();
}
}