мне вызвать контроллер Grails из задания Quartz для вызовов REST API? - PullRequest
0 голосов
/ 01 марта 2011

Я видел несколько публикаций, в которых говорилось, что кварцевые задания не должны вызывать контроллеры.Я использую Grails, чтобы использовать новую поддержку salesforce.com для REST API.Ночная работа будет использовать этот API для обновления данных клиентов из нашей собственной БД в среду Salesforce.Существует сеанс, который создается с использованием идентификатора входа.

Итак ... Я хотел бы использовать плагин заданий для grails, чтобы дать мне способ в стиле cron вызывать контроллеры, взаимодействующие со службами, для отправки вызовов REST API через httpclient для обновления / загрузкинаши объекты на землях salesforce.com.

Похоже, что это будет законной причиной для вызова контроллеров из области рабочих мест в Grails.

Буду рад любым отзывам или альтернативным подходам (в рамках Grails) для решения этой проблемы.спасибо Дэвид

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Почему вы вызываете контроллеры из Quartz? Это выглядит странно неловко. Услуги пользователя Grails. Кварцевый плагин имеет внедрение зависимостей, поэтому должно быть легко вызвать сервисные методы.

0 голосов
/ 02 марта 2015

Я чувствую, что вопрос правильный.У меня было похожее требование.Я использовал плагин Grails Rest.Действие контроллера Grails, которое экспортирует некоторые данные отчета в Excel и ежедневно отправляет их по электронной почте в список рассылки.Поэтому я создал метод в контроллере:

def exportToExcel() {
        myService.exportToExcel(response)
    }

Затем, кроме реализации exportToExcel () в myService.groovy, я создал дополнительный метод, как показано ниже:

def runExportToExcelJob () {withHttp (uri: "http://localhost:9092/myProject/"){ return get (путь: 'myController / exportToExcel')}}

И, наконец, в моем задании Grails Quartz я вызвал myService.runExportToExcelJob ().

Это работает нормально. Но я тоже удивляюсь, есть ли другой способ позвонить с работы Grails. Любая обратная связь очень ценится.

0 голосов
/ 01 марта 2011

Даже если вы вызовете контроллер из кварцевой задачи, вы не сможете получить доступ к сеансу, потому что не будет аутентифицированного пользователя. Если вы хотите создать сложную бизнес-логику, поместите ее в службу, а затем вызовите ее с работы. Объявление служб в кварцевых заданиях точно такое же, как объявление в контроллерах.

...