我有类似的东西用于使用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.
我很擅长使用诺言/未来,我不知道如何解决它。
答案 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绑定到当前线程。