Пожалуйста, посмотрите здесь пример, это лучше всего иллюстрирует проблему и как она решена в последней версии (2.3.1) Джерси.
https://jersey.java.net/documentation/latest/representations.html#d0e3586
В основном это связано с определением пользовательского исключения и сохранением возвращаемый тип как объект. При возникновении ошибки генерируется исключение, в противном случае вы возвращаете POJO.