123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package com.its.rota.server;
- import com.its.rota.server.common.SpringUtils;
- import com.its.rota.server.process.dbms.DbmsDataProcess;
- import com.its.rota.server.xnet.server.process.work.DataPacketProcess;
- import com.its.rota.server.repository.ApplicationRepository;
- import com.its.rota.server.service.UnitSystService;
- import com.its.rota.server.xnet.server.ItsAsnCommServerService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.DisposableBean;
- import org.springframework.beans.factory.InitializingBean;
- 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.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.util.Date;
- @Slf4j
- @SpringBootApplication
- @EnableTransactionManagement
- @ComponentScan(basePackages = {"com.its.app.common", "com.its.rota.server.config", "com.its.rota.server"})
- public class ItsRotaServerApplication implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
- private static final String APPLICATION_NAME = "its-rota-server";
- public static void main(String[] args) {
- SpringApplication application = new SpringApplicationBuilder()
- .sources(ItsRotaServerApplication.class)
- .listeners(new ApplicationPidFileWriter("./conf/" + APPLICATION_NAME + ".pid"))
- .build();
- application.setBannerMode(Banner.Mode.OFF);
- application.run(args);
- }
- @Override
- public void run(String... args) throws Exception {
- SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- log.info("");
- log.info("");
- log.info("************************************************************************************");
- log.info("** **");
- log.info("** UTIC ITS ROTA System **");
- log.info("** UTIC ITS ROTA Communication Server Program. **");
- log.info("** **");
- log.info("** [ver.1.0] **");
- log.info("** startup: {}", sdfDate.format(new Date()));
- log.info("** HOME: {}", System.getProperty("user.home"));
- log.info("************************************************************************************");
- DbmsDataProcess dbmsDataProcess = SpringUtils.getBean(DbmsDataProcess.class);
- dbmsDataProcess.run();
- ApplicationRepository applicationRepository = SpringUtils.getBean(ApplicationRepository.class);
- applicationRepository.loadDb();
- DataPacketProcess dataPacketProcess = SpringUtils.getBean(DataPacketProcess.class);
- dataPacketProcess.run();
- ItsAsnCommServerService itsAsnCommServerService = SpringUtils.getBean(ItsAsnCommServerService.class);
- itsAsnCommServerService.run();
- }
- public void terminateApplication() {
- ApplicationRepository applicationRepository = SpringUtils.getBean(ApplicationRepository.class);
- applicationRepository.terminate();
- UnitSystService unitSystService = SpringUtils.getBean(UnitSystService.class);
- unitSystService.updateUnitSystStts(false);
- ItsAsnCommServerService itsAsnCommServerService = SpringUtils.getBean(ItsAsnCommServerService.class);
- itsAsnCommServerService.shutdown();
- }
- @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);
- terminateApplication();
- }
- @Override
- public void destroy() throws Exception {
- log.error("Application destroy");
- }
- @Override
- public void afterPropertiesSet() throws Exception {
- log.info("Application afterPropertiesSet");
- }
- }
|