From 0bab357c5ef4249bc53ff21f8ffbbdf36ca1b5c0 Mon Sep 17 00:00:00 2001 From: Djeumen Rolain Bonaventure Date: Thu, 2 May 2024 15:12:42 +0100 Subject: [PATCH] feat(jans-keycloak-integration): add kc scheduler service #8343 (#8436) * fix(jans-linux-setup): improper scim configuration for jans kc #8210 * updated the keycloak configuration file to reflect the configuration for the storage-spi Signed-off-by: Rolain Djeumen * chore(jans-keycloak-integration): bump kc version to 24.0.0 #8315 Signed-off-by: Rolain Djeumen * feat(jans-keycloak-integration): add kc scheduler service #8343 * changed the application into a single run application suitable for cron Signed-off-by: Rolain Djeumen --------- Signed-off-by: Rolain Djeumen --- .../main/java/io/jans/kc/scheduler/App.java | 42 ++++++++++++------- .../scheduler/TrustRelationshipSyncJob.java | 7 +++- jans-keycloak-integration/pom.xml | 1 - 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/App.java b/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/App.java index 38144371dba..8a2fb3c8542 100644 --- a/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/App.java +++ b/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/App.java @@ -49,6 +49,7 @@ public class App { private static KeycloakApiFactory keycloakApiFactory = null; private static boolean running = false; + private static boolean isCronJob = true; /* * Entry point */ @@ -69,23 +70,24 @@ public static void main(String[] args) throws InterruptedException, ParserCreate log.debug("Initialization additional application objects"); SAXUtils.init(); - log.debug("Initializing scheduler "); - jobScheduler = createJobScheduler(config); - startJobScheduler(jobScheduler); - - log.debug("Starting jans trust relationship sync job"); - startJansTrustRelationshipSyncJob(config); - - - - log.debug("Performing post-startup operations"); - performPostStartupOperations(); - - log.debug("Application startup successful"); - while(running) { - Thread.sleep(1000); + if(isCronJob) { + log.debug("Running as cron, skiping scheduler initialization"); + runCronJobs(); + log.debug("Jobs run to completion."); + }else { + log.debug("Not running as cron job. Initializing scheduler"); + jobScheduler = createJobScheduler(config); + startJobScheduler(jobScheduler); + log.debug("Starting jans trust relationship sync job"); + startJansTrustRelationshipSyncJob(config); + log.debug("Performing post-startup operations"); + performPostStartupOperations(); + log.debug("Application startup successful"); + while(running) { + Thread.sleep(1000); + } } - log.debug("Application shutting down"); + log.info("Application shutthing down"); }catch(StartupError e) { log.error("Application startup failed",e); if(jobScheduler != null) { @@ -159,6 +161,14 @@ private static final JobScheduler createQuartzJobSchedulerFromConfiguration(AppC } } + private static final void runCronJobs() { + + log.debug("Running trust relationship sync cron job"); + TrustRelationshipSyncJob trsyncjob = new TrustRelationshipSyncJob(); + trsyncjob.run(null); + log.debug("Trust relationship sync cron job complete"); + } + private static final void performPostStartupOperations() { running = true; diff --git a/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/TrustRelationshipSyncJob.java b/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/TrustRelationshipSyncJob.java index 9e776df4fb9..df165020df0 100644 --- a/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/TrustRelationshipSyncJob.java +++ b/jans-keycloak-integration/job-scheduler/src/main/java/io/jans/kc/scheduler/TrustRelationshipSyncJob.java @@ -50,8 +50,13 @@ public TrustRelationshipSyncJob() { @Override public void run(ExecutionContext context) { - try { + performSyncTasks(); + } + + private void performSyncTasks() { + + try { log.debug("Performing Saml client housekeeping"); performSamlClientsHousekeeping(); log.debug("Saml client housekeeping complete"); diff --git a/jans-keycloak-integration/pom.xml b/jans-keycloak-integration/pom.xml index 0f64c4ab2af..6e5c62da134 100644 --- a/jans-keycloak-integration/pom.xml +++ b/jans-keycloak-integration/pom.xml @@ -60,7 +60,6 @@ authenticator storage-spi job-scheduler - protocol-mapper