package com.dangdang.ddframe.job.lite.internal.schedule; import com.dangdang.ddframe.job.lite.internal.election.LeaderService; import com.dangdang.ddframe.job.lite.internal.instance.InstanceService; import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.plugins.management.ShutdownHookPlugin; import org.quartz.spi.ClassLoadHelper; /** * 作业关闭钩子. * * @author zhangliang */ public final class JobShutdownHookPlugin extends ShutdownHookPlugin { private String jobName; @Override public void initialize(final String name, final Scheduler scheduler, final ClassLoadHelper classLoadHelper) throws SchedulerException { super.initialize(name, scheduler, classLoadHelper); jobName = scheduler.getSchedulerName(); } @Override public void shutdown() { CoordinatorRegistryCenter regCenter = JobRegistry.getInstance().getRegCenter(jobName); if (null == regCenter) { return; } LeaderService leaderService = new LeaderService(regCenter, jobName); if (leaderService.isLeader()) { leaderService.removeLeader(); } new InstanceService(regCenter, jobName).removeInstance(); } }