Używam asynchronicznego renderowania Servlet 3.0 w mojej aplikacji Grails. I pojawia się następujący błąd.Programowanie asynchroniczne w Grails
| Error 2014-04-29 11:10:24,125 [Actor Thread 28] ERROR gpars.LoggingPoolFactory - Async execution error: null
Message: null
Line | Method
->> 61 | doCall in org.grails.async.factory.gpars.GparsPromise$_onComplete_closure1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 62 | run in groovyx.gpars.dataflow.DataCallback$1
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 724 | run . . . in java.lang.Thread
Proszę mi pomóc rozwiązać ten problem.
Oto kod
//Promise 1
Promise p1 = task {
println id+" p1 Task is Runing"
sleep(4000)
println id+" p1 Thread Woke Up"
return "p1Completed"
}
//Promise 2
Promise p2 = task {
println id+" p2 Task is Runing"
sleep(4000)
println id+" p2 Thread Woke Up"
return "p2Completed"
}
p1.onComplete { result ->
println id+" Promise p1 Completed returned "+result
}
p1.onError { Throwable err ->
println id+" p1 An error occured ${err.message}"
}
p2.onComplete { result ->
println id+" Promise p2 Completed returned "+result
}
p2.onError { Throwable err ->
println id+" p2 An error occured ${err.message}"
}
Możesz pisać kod, który jest zepsuty? –
Spróbuj określić wartość zwracaną w metodach onComplete (np. Wynik String-> ... w twoim przypadku) i sprawdź, czy to pomaga. –
Cześć Raanan, zdefiniowałem wartość zwracaną w metodzie onComplete, o czym wspomniałeś. Ale nadal problem nadal występuje. Błąd nadchodzi, ale nie jest częsty. Jeśli uruchomię jakieś 20 lub 30 razy, gdy napotkam błąd. Czy możesz mi pomóc? –