وقتی در یک متد Action در Play Framework که CompletionStage بر می گرداند می خواهم به request جاری دسترسی داشته باشم با خطای زیر روبرو می شوم:
[CompletionException: java.lang.RuntimeException: There is no HTTP Context available from here.]
در کد زیر:
public CompletionStage<Result> message() {
return getFutureMessage(1, TimeUnit.SECONDS)
.thenApply(result -> ok(request().host() + " - " + result));
}
private CompletionStage<String> getFutureMessage(long time, TimeUnit timeUnit) {
CompletableFuture<String> future = new CompletableFuture<>();
actorSystem.scheduler().scheduleOnce(
Duration.create(time, timeUnit),
() -> future.complete("Hi!"),
exec
);
return future;
}
فراخوانی request().host را که حذف می کنم کد مشکلی ندارد.