RestEasy ExceptionMapper не перехватывает исключения - PullRequest
4 голосов
/ 14 сентября 2011

Я выкидываю исключение MyCustomException из моего приложения.(EJB Layer)

У меня есть сопоставление исключений в слое веб-службы, которое выглядит следующим образом -

package net.webservices;

import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.Provider; 
import net.common.MyCustomException;

@Provider 
public class EJBExceptionMapper implements 
ExceptionMapper<net.common.MyCustomException>  {

  public Response toResponse(MyCustomException exception) {
    return Response.status(Response.Status.BAD_REQUEST).build();    
}   

  }

Я зарегистрировал свой преобразователь в web.xml слоя веб-службыследующее -

 <context-param>
    <param-name>resteasy.providers</param-name>
    <param-value>net.webservices.EJBExceptionMapper</param-value>        
</context-param>

EJBExceptionMapper не перехватывает MyCustomException.Но вместо этого его ловит блок catch реализации веб-сервиса.

В чем может быть проблема?

Примечание: я не хочу регистрировать свой ExceptionMapper вручную, используя getProviderFactory().addExceptionMapper()

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Я не знаю, почему ваше решение не работает (но я никогда не использовал RESTeasy, только Джерси). В любом случае, вероятно, было бы проще расширить WebApplicationException. Таким образом, вам не нужно регистрировать провайдера:

public class MyCustomException extends WebApplicationException {
    public MyCustomException() {
        super(Response.status(Response.Status.BAD_REQUEST).build());
    }
}
0 голосов
/ 31 августа 2015

Вам нужно добавить исключение (типа MyCustomException) в блок catch и добавить «Throws MyCustomException» в сигнатуру метода

...