を呼び出して非同期でコンテキストを保存する2.5を再生する:、我々はいくつかのデータを取得するために別のサービスに手を差し伸べる、当社のコントローラクラスで
Future<JsonNode> futureSite = someClient.getSite(siteId, queryParams);
return FutureConverters.toJava(futureSite).thenApplyAsync((siteJson) -> {
Site site = Json.fromJson(siteJson, Site.class);
try {
return function.apply(site);
} catch (RequestException e) {
return e.result;
}
}).exceptionally(throwable -> {
if(throwable instanceof OurClientException) {
if(((OurClientException) throwable).httpStatusCode == 404) {
return entityNotFound("Site", siteId);
}
}
return null;
});
私たちはユニットテストに設定されている文脈で気づく何(私たちはscalatestプレイを使用します)は失われ、非同期呼び出しを(FutureConverters.toJava(futureSite).thenApplyAsync((siteJson)
にすると、別のスレッド上にあるので、nullになります。
私たちが上記の関数を使用するコントローラコードで問題を引き起こします... request()は、利用可能なコンテキストがないことを示すランタイム例外をスローします。
どのようにコンテキストを保存できますか?