Как выполнить Groovy script в Grails с помощью Cron

#grails #groovy

#grails #groovy

Вопрос:

У меня есть приложение Grails, но мне нужно выполнить некоторый скрипт с помощью Cron. Этот скрипт должен иметь доступ к базе данных с помощью Gorm. Это можно сделать grails create-script cron-script . Но как перенести его в файл war или jar?

Ответ №1:

Наиболее распространенный способ выполнения сценариев через регулярные промежутки времени в приложении Grails — это плагин Quartz. Нет простого способа получить доступ к GORM из задания cron.

Ответ №2:

Если у вас установлен консольный плагин, его можно вызвать с помощью curl из сценария оболочки, выполняемого cron. Сделайте что-то вроде этого:

 #/bin/bash

import groovy.sql.Sql
def dataSource = ctx.dataSource
def sql = new Sql(dataSource)

curl -i -H "Content-type: application/x-www-form-urlencoded" -c /tmp/cookies.txt -X POST www.yoursite.com/j_spring_security_check -d "j_username=admin@yoursite.comamp;j_password=verysecretpassword"

curl -i -b /tmp/cookies.txt -d 'code=
  sql.executeUpdate("insert into yourtable (test) values (42)")
' www.yoursite.com/console/execute