Выдача информативных сообщений об ошибках из веб-сервисов RESTful в Джерси - PullRequest
4 голосов
/ 25 мая 2011

У меня есть RESTful Web-сервис, который выполняет некоторые операции ввода-вывода и базы данных для возврата результата.

Есть некоторые Exceptions, которые я хотел бы увидеть, то есть исключение выдается, потому чтоожидаемая переменная не установлена, или моя база данных больше не существует, и т.д ...

Однако, когда я выбрасываю эти исключения, они попадают в исключение HTTP 500 (Internal Server Error), и именно это получает клиент (какв отличие от корневого исключения).

Я бы хотел увидеть здесь свое исключение, вместо того, чтобы просматривать журналы сервера приложений.

1 Ответ

2 голосов
/ 25 мая 2011

Вы можете реализовать ExceptionMapper, который возвращает все, что вы хотите. Так, например, он может поместить в ответ целое исключение со стековой трассировкой.

Это то, что вы хотите на стороне клиента? Я не уверен.
Клиенту может быть довольно сложно перестроить исключения и перебросить их.

Кроме того, это довольно небезопасно, так как трассировка стека предоставит клиенту внутренний код сервера.

Я предлагаю вам объявить некоторые коды ошибок сервера, которые имеют смысл для клиента и которые вы хотите раскрыть. Пример:

  • 1000 - сбой подключения к базе данных.
  • 2000 - что-то еще

Таким образом, для конкретных исключений в ExceptionMapper вы можете сопоставить исключения сервера с кодами ошибок, а затем переназначить их на стороне клиента.

...