Почему «неверный запрос» при запросе ресурса с mime-типом application / xml в Джерси? - PullRequest
2 голосов
/ 07 сентября 2011

В нашем приложении есть рабочий метод, который возвращает JSON-представление Company.Я изменил @Produces, добавив MediaType.APPLICATION_XML.Однако, когда я устанавливаю заголовок «Принять» в запросе «application / xml», Джерси возвращает «Неверный запрос» 400.

@GET
@Path("{unique_id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getCompanyDetail(@PathParam("unique_id") long id, @QueryParam("view") final String view, @Context UriInfo ui) {

Это сообщение журнала:

2011-09-07 12:35:58,279 ERROR [STDERR] Sep 7, 2011 12:35:58 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java type, class com.dnb.applications.webservice.rest.view.response.GetCompanyDetailResponse, and MIME media type, application/xml, was not found

......

Тем не менее, JSON работает нормально.

Вот взрывающаяся строка:

return responseBuilder.entity(vo).build();

'vo'это наш JAXB-аннотированный объект просмотра.Он аннотируется @XmlType.

Если мы хотим добавить поддержку XML, это правильный подход?Я думал, что у Джерси был поставщик XML, и он по умолчанию обрабатывал XML.

Есть ли проблемы с построением ответа для JSON и XML одним и тем же методом?

1 Ответ

4 голосов
/ 08 сентября 2011

В аннотированном классе отсутствует аннотация @XmlRootElement. Это работает, если вы возвращаете JSON, но не XML.

...