1

我们有一个应用程序,我们想像在控制台窗口中一样运行脚本,可以访问应用程序库和上下文,但是我们需要像 cron 作业一样定期运行它。

虽然永久的答案显然是 Quartz 工作,但我们需要在能够修补应用程序之前执行此操作。

有没有什么东西可以为我们提供与控制台插件相同的环境,但可以通过命令行或没有 UI 运行?

4

2 回答 2

2

您可以像 Web 界面一样运行控制台脚本,但只需像这样的 curl:

curl -F 'code=
class A {
  def name
}

def foo = new A(name: "bar")
println foo.name
' localhost:8080/console/execute

您将得到响应,因为控制台将在下面打印。

于 2014-04-09T14:53:43.947 回答
1

关于上面@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
于 2014-04-09T17:41:47.060 回答