package org.oran.pmproducer;
-import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
@SpringBootApplication
@EnableConfigurationProperties
private static final Logger logger = LoggerFactory.getLogger(Application.class);
- @Value("${app.configuration-filepath}")
- private String localConfigurationFilePath;
-
- private long configFileLastModification = 0;
private static ConfigurableApplicationContext applicationContext;
public static void main(String[] args) {
});
}
- @Scheduled(fixedRate = 10 * 1000)
- public void checkConfigFileChanges() {
- long timestamp = new File(localConfigurationFilePath).lastModified();
- if (configFileLastModification != 0 && timestamp != configFileLastModification) {
- logger.info("Restarting due to change in the file {}", localConfigurationFilePath);
- restartApplication();
- }
- configFileLastModification = timestamp;
- }
-
private static void restartApplication() {
if (applicationContext == null) {
logger.info("Cannot restart in unittest");
thread.setDaemon(false);
thread.start();
}
+
}