Исполнитель Grails - не может использовать OauthService асинхронно - PullRequest
1 голос
/ 13 января 2012

Я установил плагин 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)

...