2015-11-26 12 views
9

Tôi có một mapper ngoại lệ như sauđể Thi hành ExceptionMapper

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

@Provider 
public class NotFoundMapper implements ExceptionMapper<NotFoundException> { 

    private final Logger log = LoggerFactory.getLogger(getClass()); 
    private final MapperResponseBuilder responseBuilder = new MapperResponseBuilder(); 

    @Override 
    public Response toResponse(NotFoundException ex) { 
     log.warn("NotFoundException : " + ex.getMessage(), ex); 
     return responseBuilder.buildErrorResponse(ex.getMessage(), Status.BAD_REQUEST); 
    } 
} 

Vì vậy, các NotFoundException là một RuntimeException. Tôi muốn có người vẽ bản đồ 3 ngoại lệ, mà bản đồ

  1. NotFoundException với ưu tiên kéo dây suôn sẻ
  2. RuntimeException với ưu tiên tiếp theo
  3. cuối cùng Exception

Có cách nào để ưu tiên những?

+3

Nó đã chạy với mức độ ưu tiên đó. Một trong những cụ thể nhất là hit. Nếu bạn muốn cả ba người lập bản đồ bị tấn công, điều đó sẽ không xảy ra. Chỉ một người lập bản đồ được truy cập theo yêu cầu. Đó là một cơ chế an toàn để tránh các vòng vô hạn. –

+0

Cảm ơn bạn @peeskillet, Bạn có thể thêm điều này như là một asnwer – dinesh707

Trả lời

12

Nó đã chạy với mức độ ưu tiên đó. Một trong những cụ thể nhất là hit.

Từ JAX-RS spec

Khi chọn một nhà cung cấp bản đồ ngoại lệ để ánh xạ một ngoại lệ, một thực hiện PHẢI sử dụng các nhà cung cấp có loại generic là lớp cha gần nhất của ngoại lệ.

Nếu tôi không hiểu chính xác câu hỏi của bạn và thay vào đó bạn muốn cả ba người lập bản đồ bị trúng, điều đó sẽ không xảy ra. Chỉ một người lập bản đồ được truy cập theo yêu cầu. Đó là một cơ chế an toàn để tránh các vòng vô hạn.

+0

Tôi đã đến câu hỏi này bởi vì Jersey dường như đôi khi sử dụng sai mapper ngoại lệ dựa trên thứ tự mà tôi đăng ký chúng. Nó không có vẻ jersey (2.8.6 hoặc 2.9.0) tuân thủ spec trong một số trường hợp lạ? – vikingsteve

Các vấn đề liên quan