I have a @Configuration class as follows:
@Configuration public class SampleKieConfiguration { @Bean public KieServices kieServices() { return KieServices.Factory.get(); } @Bean public KieContainer kieContainer() { ReleaseId releaseId = kieServices().newReleaseId("groupId", "artifactId", "version"); KieContainer kieContainer = kieServices().newKieContainer(releaseId); kieServices().newKieScanner(kieContainer).start(10_000); return kieContainer; } @Bean public KieBase kieBase() { KieBaseConfiguration kieBaseConfiguration = kieServices().newKieBaseConfiguration(); kieBaseConfiguration.setOption(EqualityBehaviorOption.EQUALITY); kieBaseConfiguration.setOption(EventProcessingOption.CLOUD); return kieContainer().newKieBase(kieBaseConfiguration); } } kieServices().newKieScanner(kieContainer).start(10_000); line basically polls a remote maven repository and refreshes the kieContainer object every 10 seconds, if there's a new artifact.
And in somewhere in my upper layers (such as services layer), I have:
@Service @RefreshScope public class SampleService { @Autowired private KieBase kBase; } The kBase object is not refreshed (at least not with the new kieContainer object) as far as I can see, when I make a call to /refresh endpoint. I don't have a centralized configuration, and I am getting a warning on it when I call /refresh. What I want to achieve is to have a new kBase object every time kieContainer is refreshed. How can I achieve this? Thanks!