Restricting Scheduler to run in published Env.

Accepted Solutions (1)

Accepted Solutions (1)

khamat_bn 12-10-2019

In the run() of scheduler you have to runmode wheather its autour or publisher


    private SlingSettingsService settingsService;

    private Set<String> runModes;


    public void run() {

        this.runModes = settingsService.getRunModes();

        if (null != runModes && runModes.contains("author")) {

//your code goes here...


Answers (3)

Answers (3)


While the answer by​ works for that, the best solution for this is the one by arpitv27529355​: You should never hardcode this in the code, but rely on configuration instead.

Personally I would consider every call of SlingSettingsService.getRunmodes() as bad practice.

arpitv27529355 12-10-2019

Hi venusj64090183

In your service, you can define policy = ConfigurationPolicy.REQUIRE as below

@Component(policy = ConfigurationPolicy.REQUIRE) 

Now create OSGi config only for publish run mode. Your service will not satisfied with the author instance.

Reference: OSGi component in AEM that is active only in specific run mode (say, publish). – Compute Patterns



ka786 11-10-2019

Use run mode configuration.

Add a config in folder so that scheduler will not run in author

Add a config in config.publish folder so that it gets executed in publish.

Hope this helps.