如何中止在Hybris中运行Groovy脚本?

如何中止在Hybris中运行Groovy脚本?,groovy,cron,hybris,Groovy,Cron,Hybris,我创建了groovy脚本来重新处理失败的进程并保存在backoffice中 需要手动中止groovy脚本。因此,任何人都可以建议我们是否可以中止像Cronjob这样的Groovy脚本?据我所知,SAP Commerce中的所有Cronjob都是从一个专用线程开始的。 因此,您应该能够通过转到hAC并执行线程转储(监控->线程转储)来识别groovy脚本正在运行的线程。在该线程转储中,从脚本语言视图中找到该线程并使用下面的groovy代码杀死它 我已经使用过这种方法好几次了,但只有在非常罕见的情

我创建了groovy脚本来重新处理失败的进程并保存在backoffice中


需要手动中止groovy脚本。因此,任何人都可以建议我们是否可以中止像Cronjob这样的Groovy脚本?

据我所知,SAP Commerce中的所有Cronjob都是从一个专用线程开始的。 因此,您应该能够通过转到hAC并执行线程转储(监控->线程转储)来识别groovy脚本正在运行的线程。在该线程转储中,从脚本语言视图中找到该线程并使用下面的groovy代码杀死它

我已经使用过这种方法好几次了,但只有在非常罕见的情况下,其他方法都没有帮助

Set<Thread> threads = Thread.getAllStackTraces().keySet()
threads.each {
  if(it.name.startsWith("YOURCRONJOBNAME")){
    it.interrupt()
    print "KILLED\t"
  } else{
    print "\t"
  }
  println "${it.name}"
}
Set threads=Thread.getAllStackTraces().keySet()
每个线程{
if(it.name.startsWith(“YOURCRONJOBNAME”)){
it.interrupt()
打印“已终止\t”
}否则{
打印“\t”
}
println“${it.name}”
}

在实现自定义cronjobs时,您应该始终确保实现可中止的契约(通过重写
isportable()
),然后您将能够从后台阻止它们。

您可以实现可中止的cronjobs。Groovy脚本可能根本不可中止(除非按照上面的答案中的建议终止线程)

有关可中止的cronjobs,请参见此处: