Как я могу отказаться от ответа на запрос в веб-сервисе Java? - PullRequest
3 голосов
/ 07 января 2011

Предположим, у нас есть запрос веб-сервиса, который мы даже не хотим удостоить ответом:

@WebMethod(operationName = "doSomethingForNicePeopleOnly")
public String doSomethingForNicePeopleOnly(@WebParam(name="username") String user) {
    if (userIsNice(user)) {
      return "something nice";
    } else {
      // I'd prefer not to return anything at all, not even a 404...
    }
}

Как лучше всего не отвечать на данный запрос веб-службы Java?

Ответы [ 2 ]

3 голосов
/ 07 января 2011

Зачем вообще ничего не возвращать?Это просто заставляет ваше соединение оставаться открытым до истечения времени ожидания, тратя впустую время вашего сервера и пользователя.

Я не знаю, насколько легко это сделать в веб-сервисах Java, но вы можете вернуть 202 («Принято», но обработка не завершена, и может быть позже молча отклонена) или 204 («Нет ответа»), может быть?

1 голос
/ 08 января 2011

Я думаю, что можно придумать несколько вариантов здесь:

Вернуть бесполезный ответ (например, пустую строку):

} else {
  return "";
}

Или сгенерировать исключение:

} else {
  throw new Exception("whatevah....");
}

Или попробуйте какую-нибудь тактику задержки, затем # 1 или # 2:

} else {
  Thread.sleep(90000);  // 90 seconds!
  return "";
}

Также здесь может быть уместен HTTP-код 403-Forbidden в качестве четвертого варианта.

...