Я использую тот же подход, что и в другом потоке - проверка того, что конкретный хост является правильным для запуска задания. Но ..
Im не очень информация ee инструменты, но весной вы можете использовать профили для этого. Вероятно, вы можете найти подобное решение для своих нужд. Посмотрите на http://spring.io/blog/2011/06/21/spring-3-1-m2-testing-with-configuration-classes-and-profiles
Вы можете определить два отдельных зерен:
@Configuration
@Profile("dev")
public class StandaloneDataConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:com/bank/config/sql/schema.sql")
.addScript("classpath:com/bank/config/sql/test-data.sql")
.build();
}
}
@Configuration
@Profile("production")
public class JndiDataConfig {
@Bean
public DataSource dataSource() throws Exception {
Context ctx = new InitialContext();
return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
}
}
и решить, какой из них для включения путем переключения профиля. Таким образом, ваш класс с аннотированным методом @Scheduled будет загружен только для определенного профиля. Конечно, вам нужно настроить приложение, чтобы включить профиль только из узлов. В весеннем приложении это будет так же просто, как передать -Dspring.profiles.active = profile в один из них.
https://github.com/SpringOnePlatform2016/dsyer-locks-and-leaders – MariuszS