【问题标题】:Cron-like application of groovy script with console plugin environment?带有控制台插件环境的 groovy 脚本的类 Cron 应用程序?
【发布时间】:2014-05-21 14:40:30
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以从命令行运行完全相同的脚本,通过类路径传递必要的库。还不够吗?你的意思是什么库和上下文?
  • 我实际上是指在我的应用程序运行时访问它的上下文和库。控制台插件允许这样做,就好像您在应用程序运行时在其内部编写脚本一样。我能够通过将我的脚本放在控制台插件窗口中的循环中来解决这个问题(在某种程度上)(一旦脚本被执行,它会继续在后台运行,即使页面超时)。

标签: grails groovy cron groovy-console


【解决方案1】:

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

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

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

您将收到控制台将在下方打印的响应。

【讨论】:

  • 太棒了,这正是我想要的。
【解决方案2】:

关于上述@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-10-18
    • 2015-06-24
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2016-12-20
    • 2019-10-21
    相关资源
    最近更新 更多