Я внедряю приложение GWT, которое вызывает REST-сервис (который мы также разрабатываем).Когда REST-сервис возвращает что-либо с HTTP-статусом, отличным от 200, я ожидаю, что будет вызван метод onFailure AsyncCallback.Однако я не могу этого добиться.
Для дальнейшей проверки я создал тестовое приложение GWT и тестовый сервлет.Часть приложения GWT, которая вызывает службу, выглядит следующим образом:
JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
jsonp.setCallbackParam("_jsonp");
jsonp.setFailureCallbackParam("_jsonp_failure");
jsonp.requestObject(url, new AsyncCallback<JavaScriptObject>()
{
@Override
public void onFailure(Throwable caught)
{
Window.alert("Failure: " + caught.getMessage());
}
@Override
public void onSuccess(JavaScriptObject result)
{
Window.alert("Success");
}
});
Код сервлета выглядит следующим образом:
public class MyRestServlet extends HttpServlet
{
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
{
String padding = httpServletRequest.getParameter("_jsonp_failure");
httpServletResponse.setContentType("application/x+javascript");
httpServletResponse.setStatus(500);
PrintWriter out = httpServletResponse.getWriter();
out.println(padding + "({\"some\":\"json\"});");
out.close();
}
}
OnFailure в конечном счете вызывается по истечении времени ожидания запроса,но я ожидаю, что он будет вызван, как только ответ http поступит (если это сбой).Я предполагаю, что есть кое-что, чего я не понял, и я был бы очень признателен за помощь.
Спасибо