Hi!
We want to use undertow as the http server for our application. Our current API is based
on futures (java8 completable futures). My question is how do i combine futures with the
concept of handlers. My rather naive implementation would be something like that.
class MyHandler implements HttpHandler {
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
exchange.getRequestReceiver().receiveFullString((exchange1, message) -> {
CompletableFuture<Response> responseFuture = doTheWork(message);
exchange1.dispatch();
responseFuture.whenCompleteAsync((response, throwable) -> {
exchange1.getResponseSender().send(response);
});
});
}
}
does this look reasonable? responseFuture.whenCompleteAsync() can be passed an Executor.
Should i use an Executor from the HttpServerExchange for that? actually i tried to, but
it’s always null. Another way would be:
class MyHandler implements HttpHandler {
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
exchange.getRequestReceiver().receiveFullString((exchange1, message) -> {
CompletableFuture<Response> responseFuture = doTheWork(message);
exchange1.dispatch(() -> {
exchange1.getResponseSender().send(responseFuture.get());
});
});
}
}
What’s the correct way to do it?
Thanks, Sascha