future.get无法使用java future / promise

时间:2016-01-28 01:51:07

标签: java playframework

我有类似的东西用于使用future

制作sendDate异步
ExecutorService es = Executors.newFixedThreadPool(3);
final Future<String> future = es.submit(new Callable<String>() {
    public String call() throws Exception {

         // SEND DATA return string
        return sendData(jObject.toString(), "delivery", act_id);
    }
});
System.out.println("\n\n\n\n\n\n\n no future!" + future.get()); 
//then I tried to call it here

但我收到了错误

java.lang.RuntimeException: No EntityManager bound to this thread. Try
wrapping this call in JPA.withTransaction, or ensure that the HTTP
context is setup on this thread.

我很擅长使用诺言/未来,我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

它实际上说明了您需要在错误消息中执行的操作: - )

sendData方法的来电换入JPA.withTransaction来电。这看起来像这样:

JPA.withTransaction(new play.libs.F.Function0<String>() {
    public String apply() {       
        return sendData(jObject.toString(), "delivery", act_id);
    }
});

或者,您可以尝试使用ThreadLocal将EntityManager绑定到当前线程。