В Play Framework 2.2.2 я хотел бы вернуть обещание. Однако я вызываю функцию, которая нуждается в доступе к переменным, хранящимся в Http.Context.current()
(текущий зарегистрированный пользователь, соединение JPA ...).Как использовать Http.Context.current() в обещании в игре?
Конечно, поскольку Promise выполняется в другом потоке, у него нет доступа к Http.Context.current()
. Могу ли я сохранить его в обещании, или я должен восстановить его вручную? Есть ли другой образец, который я должен использовать?
Пример:
public static Promise<Result> getAvailableServices() {
return new Promise.promise(new Function0<Result>(){
@Override
public Result apply() throws Throwable {
// Long operation
List<Services> data = buildResult();
// Render the template
// (The header of the template requires access to
// Http.Context.current().args.get("usermodel"))
return Results.ok(services_template.render(services));
}
});
}
Этот вопрос можно рассматривать как переписку http://stackoverflow.com/questions/17886630/play-2-1-1-java-can-i-access-http-context-current-from-an- Произвольный-asynchro – Adrien
Мы можем передать другой аргумент Promise.promise(), ExecutionContext. Является ли [HttpExecutionContext] (http://www.playframework.com/documentation/2.2.1/api/scala/index.html#play.core.j.HttpExecutionContext) частью ответа? – Adrien