|
@@ -8,18 +8,25 @@ import com.its.rota.utic.client.xnet.client.process.work.DataPacketProcess;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.DisposableBean;
|
|
|
import org.springframework.beans.factory.InitializingBean;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
|
|
import org.springframework.boot.Banner;
|
|
|
import org.springframework.boot.CommandLineRunner;
|
|
|
import org.springframework.boot.SpringApplication;
|
|
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
|
|
import org.springframework.boot.context.ApplicationPidFileWriter;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.context.ApplicationListener;
|
|
|
import org.springframework.context.annotation.ComponentScan;
|
|
|
import org.springframework.context.event.ContextClosedEvent;
|
|
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Date;
|
|
|
|
|
|
@Slf4j
|
|
@@ -65,7 +72,10 @@ public class RotaUticClientApplication implements CommandLineRunner, Application
|
|
|
|
|
|
ItsAsnClientCommService itsAsnClientCommService = SpringUtils.getBean(ItsAsnClientCommService.class);
|
|
|
itsAsnClientCommService.run();
|
|
|
-
|
|
|
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
|
|
+ log.error("on shutdown hook.");
|
|
|
+ terminateApplication();
|
|
|
+ }));
|
|
|
}
|
|
|
|
|
|
public void terminateApplication() {
|
|
@@ -75,8 +85,21 @@ public class RotaUticClientApplication implements CommandLineRunner, Application
|
|
|
|
|
|
@Override
|
|
|
public void onApplicationEvent(ContextClosedEvent contextClosedEvent) {
|
|
|
- SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- log.error("Application Terminated: {}, {}", sdfDate.format(new Date()), contextClosedEvent);
|
|
|
+ try {
|
|
|
+ SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(contextClosedEvent.getTimestamp()), ZoneId.systemDefault());
|
|
|
+ String formattedDateTime = dateTime.format(formatter);
|
|
|
+ log.error("ContextClosedEvent Application Terminated: {}, {}", sdfDate.format(new Date()), contextClosedEvent);
|
|
|
+ log.error("ContextClosedEvent Source: " + contextClosedEvent.getSource());
|
|
|
+ log.error("ContextClosedEvent Timestamp: " + formattedDateTime);
|
|
|
+
|
|
|
+ ApplicationContext applicationContext = contextClosedEvent.getApplicationContext();
|
|
|
+ BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) applicationContext.getAutowireCapableBeanFactory();
|
|
|
+ }
|
|
|
+ catch (Throwable e) {
|
|
|
+ log.error("spring context destroy error", e);
|
|
|
+ }
|
|
|
terminateApplication();
|
|
|
}
|
|
|
|