By default, JAX-RS runtime generates a javax.ws.rs.WebApplicationException
with a HTTP 503
(Service unavailable) error response status code. A custom time-out handler
may be set on an
asynchronous response instance to provide custom time-out event resolution.
In case of a suspend time-out event, a custom time-out handler takes typically one of the following actions:
custom response or a custom exceptionAsyncResponse cancel(...)
methods.setting a new suspend time-outWebApplicationException containing the HTTP 503 status code.
Following example illustrates the use of a custom TimeoutHandler:
public class MyTimeoutHandler implements TimeoutHandler {
…
public void handleTimeout(AsyncResponse ar) {
if (keepSuspended) {
ar.setTimeout(10, SECONDS);
} else if (cancel) {
ar.cancel(retryPeriod);
} else {
ar.resume(defaultResponse);
}
}
…
}
@Path("/messages/next")
public class MessagingResource {
…
@GET
public void readMessage(@Suspended AsyncResponse ar) {
ar.setTimeoutHandler(new MyTimeoutHandler());
suspended.put(ar);
}
…
}
| Modifier and Type | Method and Description |
|---|---|
| public void | handleTimeout(AsyncResponse
suspended asynchronous response that is timing out. asyncResponse)Invoked when the suspended asynchronous response is about to time out. |
| handleTimeout | back to summary |
|---|---|
| public void handleTimeout(AsyncResponse asyncResponse) Invoked when the suspended asynchronous response is about to time out.
Implementing time-out handlers may use the callback method to change the
default time-out strategy defined by JAX-RS specification (see
A custom time-out handler may decide to either
| |