keycloak-service
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner クラス
org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner の継承関係図
Inheritance graph
org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner 連携図
Collaboration graph

公開メンバ関数

 ClusterAwareScheduledTaskRunner (KeycloakSessionFactory sessionFactory, ScheduledTask task, long intervalMillis)
 
void run ()
 

限定公開メンバ関数

void runTask (final KeycloakSession session)
 

限定公開変数類

final KeycloakSessionFactory sessionFactory
 
final ScheduledTask task
 

非公開変数類

final int intervalSecs
 

静的非公開変数類

static final Logger logger = Logger.getLogger(ClusterAwareScheduledTaskRunner.class)
 

詳解

Ensures that there are not concurrent executions of same task (either on this host or any other cluster host)

著者
Marek Posolda

構築子と解体子

◆ ClusterAwareScheduledTaskRunner()

org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner.ClusterAwareScheduledTaskRunner ( KeycloakSessionFactory  sessionFactory,
ScheduledTask  task,
long  intervalMillis 
)
inline
40  {
41  super(sessionFactory, task);
42  this.intervalSecs = (int) (intervalMillis / 1000);
43  }
final int intervalSecs
Definition: ClusterAwareScheduledTaskRunner.java:38
final ScheduledTask task
Definition: ScheduledTaskRunner.java:34
final KeycloakSessionFactory sessionFactory
Definition: ScheduledTaskRunner.java:33

関数詳解

◆ run()

void org.keycloak.services.scheduled.ScheduledTaskRunner.run ( )
inlineinherited
42  {
43  KeycloakSession session = sessionFactory.create();
44  try {
45  runTask(session);
46  } catch (Throwable t) {
47  ServicesLogger.LOGGER.failedToRunScheduledTask(t, task.getClass().getSimpleName());
48 
49  session.getTransactionManager().rollback();
50  } finally {
51  try {
52  session.close();
53  } catch (Throwable t) {
54  ServicesLogger.LOGGER.failedToCloseProviderSession(t);
55  }
56  }
57  }
void runTask(KeycloakSession session)
Definition: ScheduledTaskRunner.java:59
final ScheduledTask task
Definition: ScheduledTaskRunner.java:34
final KeycloakSessionFactory sessionFactory
Definition: ScheduledTaskRunner.java:33

◆ runTask()

void org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner.runTask ( final KeycloakSession  session)
inlineprotected
46  {
47  session.getTransactionManager().begin();
48 
49  ClusterProvider clusterProvider = session.getProvider(ClusterProvider.class);
50  String taskKey = task.getClass().getSimpleName();
51 
52  ExecutionResult<Void> result = clusterProvider.executeIfNotExecuted(taskKey, intervalSecs, new Callable<Void>() {
53 
54  @Override
55  public Void call() throws Exception {
56  task.run(session);
57  return null;
58  }
59 
60  });
61 
62  session.getTransactionManager().commit();
63 
64  if (result.isExecuted()) {
65  logger.debugf("Executed scheduled task %s", taskKey);
66  } else {
67  logger.debugf("Skipped execution of task %s as other cluster node is executing it", taskKey);
68  }
69  }
final int intervalSecs
Definition: ClusterAwareScheduledTaskRunner.java:38
static final Logger logger
Definition: ClusterAwareScheduledTaskRunner.java:36
final ScheduledTask task
Definition: ScheduledTaskRunner.java:34

メンバ詳解

◆ intervalSecs

final int org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner.intervalSecs
private

◆ logger

final Logger org.keycloak.services.scheduled.ClusterAwareScheduledTaskRunner.logger = Logger.getLogger(ClusterAwareScheduledTaskRunner.class)
staticprivate

◆ sessionFactory

final KeycloakSessionFactory org.keycloak.services.scheduled.ScheduledTaskRunner.sessionFactory
protectedinherited

◆ task

final ScheduledTask org.keycloak.services.scheduled.ScheduledTaskRunner.task
protectedinherited

このクラス詳解は次のファイルから抽出されました: