Я пытаюсь управлять всеми исключениями с помощью ExceptionMapper, как я видел в нескольких документах и примерах. Однако, похоже, это не работает, по крайней мере, в моих условиях.Amdatu: Как заставить ExceptionMapper (@Provider) работать?
Я нахожусь в среде OSGI, используя шаблон Witheboard Felix, с Amdatu Wink, поэтому у меня нет web.xml, и все должно управляться само по себе. Я попытался зарегистрировать свой ExceptionMapper как услугу, как я сделал с моими веб-сервисами, без каких-либо результатов.
@Component(immediate=true, provide={Object.class})
@Provider
public class SessionTimeoutExeptionHandler implements ExceptionMapper<SessionTimeoutException>{
public Response toResponse(SessionTimeoutException arg0) {
Response toReturn = Response.status(Status.FORBIDDEN)
.entity("session_timeout")
.build();
return toReturn;
};
}
Не обращайте внимания на сам ответ, я просто играл.
Мой код никогда не вызывается, как я должен настроить этот провайдер?
Так что я просто не могу использовать приложение Amdatu Wink по умолчанию и добавить к нему своего провайдера? Чтобы иметь такое же поведение, мне нужно было скопировать/вставить класс приложения Admatu Wink's Application в мой код, изменить его и зарегистрировать второй сервис приложений (мой) с более высоким приоритетом? – JSlain
Да, это единственный способ. Хотя это довольно просто (приложение по умолчанию действительно тривиально), возможно, это будет еще проще, поэтому я также создал проблему, чтобы улучшить это: https://amdatu.atlassian.net/browse/AMDATUWEB-34 –
Я также подумал, что это должно быть настраиваемым, поскольку мы находимся в модульном мире. В любом случае, спасибо за открытие вопроса! – JSlain