我们有一个应用程序,我们想像在控制台窗口中一样运行脚本,可以访问应用程序库和上下文,但是我们需要像 cron 作业一样定期运行它。
虽然永久的答案显然是 Quartz 工作,但我们需要在能够修补应用程序之前执行此操作。
有没有什么东西可以为我们提供与控制台插件相同的环境,但可以通过命令行或没有 UI 运行?
我们有一个应用程序,我们想像在控制台窗口中一样运行脚本,可以访问应用程序库和上下文,但是我们需要像 cron 作业一样定期运行它。
虽然永久的答案显然是 Quartz 工作,但我们需要在能够修补应用程序之前执行此操作。
有没有什么东西可以为我们提供与控制台插件相同的环境,但可以通过命令行或没有 UI 运行?
您可以像 Web 界面一样运行控制台脚本,但只需像这样的 curl:
curl -F 'code=
class A {
def name
}
def foo = new A(name: "bar")
println foo.name
' localhost:8080/console/execute
您将得到响应,因为控制台将在下面打印。
关于上面@mwaisgold 的解决方案,我做了一些快速的补充。我在脚本中添加了更多内容来处理身份验证,加上 curl 的 -F 标志导致 GroovyShell 的评估方法出现模棱两可的方法重载错误,因此我通过使用 -d 来解决这个问题:
#/bin/bash
curl -i -H "Content-type: application/x-www-form-urlencoded" -c cookies.txt -X POST localhost:8080/myapp/j_spring_security_check -d "j_username=admin&j_password=admin"
curl -i -b cookies.txt -d 'code=
int iterations = 0
while (iterations < 10) {
log.error "********** Console Cron Test ${iterations++} ***********"
}
log.error "********** Console Cron Test Complete ***********"
' localhost:8080/myapp/console/execute