Я установил плагин Grails Executor, чтобы я мог запускать некоторые фоновые задачи, выполнение которых занимает некоторое время.Задача требует, чтобы я вызывал API-интерфейсы LinkedIn, используя OauthService.Проблема в том, что я не могу вызвать OauthService.accessResource в асинхронном блоке, в то время как точно такой же код выполняется нормально.Вот код, упрощенный для иллюстрации проблемы:
import org.grails.plugins.oauth.OauthService
class DemoController {
OauthService oauthService
def demo() {
runAsync {
println "ASYNC BEGIN"
def baseURL = "http://api.linkedin.com/v1/people-search?keywords=blah"
def async_response = oauthService.accessResource( baseURL, 'linkedin', [key:session.oauthToken.key, secret:session.oauthToken.secret], 'GET')
println "ASYNC END"
}
println "SYNC BEGIN"
def baseURL = "http://api.linkedin.com/v1/people-search?keywords=blah"
def sync_response = oauthService.accessResource( baseURL, 'linkedin', [key:session.oauthToken.key, secret:session.oauthToken.secret], 'GET')
println "SYNC END"
}
}
Вот результат:
SYNC BEGIN
2012-01-12 14:55:07,163 ["http-bio-8080"-exec-10] DEBUG oauth.OauthService - Attempting to access protected resource
2012-01-12 14:55:07,163 ["http-bio-8080"-exec-10] DEBUG oauth.OauthService - Executing GET to http://api.linkedin.com/v1/people-search?keywords=blah
ASYNC BEGIN
2012-01-12 14:55:07,780 ["http-bio-8080"-exec-10] DEBUG oauth.OauthService - Reading response body
2012-01-12 14:55:07,781 ["http-bio-8080"-exec-10] DEBUG oauth.OauthService - Response body read successfully
SYNC END
Кажется, что асинхронный процесс просто останавливается на oauthService.accessResource, и после этого ничего не выполняется.У меня нет другого выхода ...
Есть идеи?
Спасибо за вашу помощь.
(Кстати, я использую Grails 2.0, Groovy 1.8.5)