I want to restrict the scheduler to run in published env. which approach will be good for this?
Solved! Go to Solution.
In the run() of scheduler you have to runmode wheather its autour or publisher
@Reference
private SlingSettingsService settingsService;
private Set<String> runModes;
@Override
public void run() {
this.runModes = settingsService.getRunModes();
if (null != runModes && runModes.contains("author")) {
//your code goes here...
}
Use run mode configuration.
Add a config in config.author 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.
Views
Replies
Total Likes
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
Regards,
Arpit
Views
Replies
Total Likes
In the run() of scheduler you have to runmode wheather its autour or publisher
@Reference
private SlingSettingsService settingsService;
private Set<String> runModes;
@Override
public void run() {
this.runModes = settingsService.getRunModes();
if (null != runModes && runModes.contains("author")) {
//your code goes here...
}
While the answer by khamat.bn 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.