我们有多少种方法可以在不停止hybris服务器的情况下停止cronjob?

时间:2017-02-09 08:27:32

标签: hybris

我认为我们可以通过hmc停止 cronjob 。 如果除了有任何方法,请回答

4 个答案:

答案 0 :(得分:2)

您可以在更全局的问题中找到答案,如何在线程中停止无限循环。 (见:https://stackoverflow.com/a/2358169/1140748

您的工作是在专用线程中启动的。

您必须停止它的唯一方法是使用可以从外部对象设置的标志。

JobPerformable(扩展AbstractJobPerformable)中,您必须经常设置此代码块以检查是否应停止cron:

    if (clearAbortRequestedIfNeeded(cronJobModel)) {
        LOG.error(String.format(MSG_INFO_JOB_ABORTED, cronJobModel.getCode()));
        return new PerformResult(CronJobResult.UNKNOWN, CronJobStatus.ABORTED);
    }

JobPerformable必须“可以中止”。要说这个代码块放在JobPerformable实现中:

@Override
public boolean isAbortable()
{
    return true;
}

答案 1 :(得分:1)

你总是可以使用(Abort Cronjob按钮)从HMC中止你的Cronjob,但是你的工作应该是一个可以挽回的工作,如果不是你将无法阻止它。

enter image description here

How to Write an Abortable Job上查看本教程。

答案 2 :(得分:0)

实际上有几种方法可以阻止Hybris中的cronjob。

第一个最佳方法是从HMC(现在为Backoffice Administration Cockpit)中止它。为此,cronjob必须是abortable。更多关于可流产的cronjobs here

您也可以转到HAC>从Monitoring中止cronjobs。 Cron Jobs。这或多或少与第一种方法相同。

当前两个不可用时,还有一些方法可以中止/停止/完成cronjob:

  1. 您可以通过impex import或直接在数据库中删除cronjob。
  2. 您可以通过impex import或数据库将cronjob的状态设置为FINISHED
  3. 我相信,你可以webservice API同时做两件事(1.和2.)。有关webservice API的更多信息here
  4. 最后但并非最不重要的是,您可以使用以下方式以编程方式中止cronjob:

    cronJobService.requestAbortCronJob(myCronJobModel);
    

    在这种情况下,cronjob也必须是abortable

    有关cronjobs的更多信息here

答案 3 :(得分:0)

在hac

下面的impex下面运行
update CronJob[batchmode=true];itemtype(code)[unique=true];active;CronJob;false