Метод 405, запрещенный в Джерси, возвращает страницу 405 Tomcat - PullRequest
1 голос
/ 24 февраля 2012

Раньше, когда я использовал Джерси в Grizzly, если бы я вызывал метод HTTP, который не был определен в аннотациях Джерси, он возвращал ответ 405 Method Not Allowed, и это нормально.при запуске Jersey на Tomcat сервер возвращает определенную страницу 405 html Tomcat.Как я могу вернуться к простой отправке ответа с пустым телом?

Ответы [ 3 ]

1 голос
/ 25 июля 2015

Как взято из этой темы: http://jersey.576304.n2.nabble.com/how-to-catch-405-errors-td4937392.html

Создайте класс сопоставления исключений следующим образом:

@Provider
public class MyMapper implements  
ExceptionMapper<WebApplicationException> {
   public Response toResponse(WebApplicationException e) {
     Response r = e.getResponse();
     if (r.getStatus() == 405) {
       return Response.fromResponse(r).entity(...).build();
     }
     return r;
   }
} 

Это позволило мне перехватить запрос 405 и вернуть более полезный ресурс ошибок, который может быть проанализирован приложениями.

0 голосов
/ 28 января 2019

Мое собственное исключение Я возвращал объект Error (POJO) в Response ... и мой сервлет-сервер не знал, как преобразовать Error в JSON.

Я решил проблему с помощьюдобавив следующую зависимость maven :

 <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.27</version>
 </dependency>

И мой ответ такой:

@Override
public Response toResponse(WebApplicationException e) {
    Response r = e.getResponse();
    if (r.getStatus() == 405) {
        Error error = new Error(Response.Status.BAD_REQUEST.toString(), e.getMessage());
        return Response.fromResponse(r).status(Response.Status.BAD_REQUEST).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                .entity(error)
                .build();
    }
    return r;
}}

На самом деле часть, которая сделала трюк, была:

header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
0 голосов
/ 25 февраля 2012

Вы можете настроить пользовательскую страницу в web.xml вашего веб-приложения:

<error-page>
    <error-code>405</error-code>
    <location>/empty.txt</location>
</error-page>

Местоположение может относиться к пустому текстовому файлу или JSP / сервлету / тому, что соответствует вашим потребностям.

...