Playframework 将Http.Context.current()传播到Play框架中的hibernate模型

Playframework 将Http.Context.current()传播到Play框架中的hibernate模型,playframework,sharding,Playframework,Sharding,我正在为一个web应用程序实现切分。我首先截取全局对象中的请求,并在GET查询参数、POST数据和URI路径中检查主键id @Override public Action onRequest(Http.Request request, Method actionMethod) { return new Action.Simple() { @Override public F.Promise<Result> cal

我正在为一个web应用程序实现切分。我首先截取全局对象中的请求,并在GET查询参数、POST数据和URI路径中检查主键id

@Override
    public Action onRequest(Http.Request request, Method actionMethod) {
        return new Action.Simple() {
            @Override
            public F.Promise<Result> call(Http.Context ctx) throws Throwable {
                ShardingService.checkAndSetShardInfo(ctx);

                return delegate.call(ctx);
            }
        };
    }
我有几个问题:

  • 如何在db dispatcher执行上下文中访问Http.Context.current(),以便在db调用执行上下文中可以使用碎片映射
  • 我认为通过会话对象中的调用堆栈传递切分信息可能不是最干净的方法。游戏中有没有更干净的方法 通过谷歌搜索我发现:

    然而,在建议的答案中,我们仍然在默认上下文中执行

    Promise.promise(() -> executeBgTask(tsec), Akka.system().dispatchers().lookup("db-dispatcher")).map((Integer i) -> ok("Got exec req for " + i + " secs"));