ItsOpServerApplication.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package com.its.op;
  2. import com.its.op.config.AppUtils;
  3. import com.its.op.config.ProcessConfig;
  4. import com.its.op.xnettcp.client.VdsCommClientService;
  5. import com.its.op.xnetudp.CenterCommUdpServer;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.DisposableBean;
  8. import org.springframework.beans.factory.InitializingBean;
  9. import org.springframework.boot.Banner;
  10. import org.springframework.boot.CommandLineRunner;
  11. import org.springframework.boot.SpringApplication;
  12. import org.springframework.boot.autoconfigure.SpringBootApplication;
  13. import org.springframework.boot.builder.SpringApplicationBuilder;
  14. import org.springframework.boot.context.ApplicationPidFileWriter;
  15. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  16. import org.springframework.context.ApplicationListener;
  17. import org.springframework.context.annotation.Configuration;
  18. import org.springframework.context.annotation.EnableAspectJAutoProxy;
  19. import org.springframework.context.event.ContextClosedEvent;
  20. import org.springframework.scheduling.annotation.EnableAsync;
  21. import org.springframework.web.bind.annotation.CrossOrigin;
  22. import java.text.SimpleDateFormat;
  23. import java.util.Date;
  24. @Slf4j
  25. //@EnableJpaAuditing // JPA Auditing 활성화
  26. @EnableAspectJAutoProxy
  27. @EnableAsync
  28. @Configuration
  29. @SpringBootApplication
  30. /*@ComponentScan(basePackages = {
  31. "com.its.api.config",
  32. "com.its.api.its.repository.*",
  33. "com.its.api.bis.repository",
  34. "com.its.api.utis.repository",
  35. "com.its.api.*"
  36. })*/
  37. //@ComponentScan("com.its")
  38. //@MapperScan({"com.its.dao.bis", "com.its.dao.its", "com.its.dao.utis"})
  39. @CrossOrigin("*")
  40. public class ItsOpServerApplication extends SpringBootServletInitializer implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
  41. private static final String applicationName = "its-op-server";
  42. @Override
  43. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  44. return builder.sources(ItsOpServerApplication.class);
  45. }
  46. public static void main(String[] args) {
  47. //System.setProperty("log4j.skipJansi", String.valueOf(true));
  48. SpringApplication application = new SpringApplicationBuilder()
  49. .sources(ItsOpServerApplication.class)
  50. .listeners(new ApplicationPidFileWriter("./conf/" + applicationName + ".pid"))
  51. .build();
  52. application.setBannerMode(Banner.Mode.OFF);
  53. application.run(args);
  54. }
  55. @Override
  56. public void run(String... args) throws Exception {
  57. ProcessConfig processConfig = (ProcessConfig) AppUtils.getBean(ProcessConfig.class);
  58. log.info("");
  59. log.info("");
  60. log.info("************************************************************************************");
  61. log.info("** **");
  62. log.info("** Intelligent Traffic System **");
  63. log.info("** Intelligent Traffic System Common Operating Server. **");
  64. log.info("** **");
  65. log.info("** [ver.1.0] **");
  66. log.info("** process: {}", processConfig.getId());
  67. log.info("** startup: {}", processConfig.getBootingDateTime());
  68. log.info("************************************************************************************");
  69. CenterCommUdpServer centerCommUdpServer = (CenterCommUdpServer)AppUtils.getBean(CenterCommUdpServer.class);
  70. centerCommUdpServer.run();
  71. VdsCommClientService vdsCommClientService = (VdsCommClientService)AppUtils.getBean(VdsCommClientService.class);
  72. vdsCommClientService.run();
  73. // Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
  74. // private volatile boolean hasShutdown = false;
  75. // private AtomicInteger shutdownTimes = new AtomicInteger(0);
  76. //
  77. // @Override
  78. // public void run() {
  79. // synchronized (this) {
  80. // log.info("shutdown hook was invoked, " + this.shutdownTimes.incrementAndGet());
  81. // if (!this.hasShutdown) {
  82. // this.hasShutdown = true;
  83. // long beginTime = System.currentTimeMillis();
  84. // long consumingTimeTotal = System.currentTimeMillis() - beginTime;
  85. // log.info("shutdown hook over, consuming time total(ms): " + consumingTimeTotal);
  86. // }
  87. // }
  88. // }
  89. // }, "ShutdownHook"));
  90. }
  91. @Override
  92. public void onApplicationEvent(ContextClosedEvent contextClosedEvent) {
  93. // shutdown.....
  94. SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  95. log.error("Application Terminated: {}, {}", sdfDate.format(new Date()), contextClosedEvent.toString());
  96. }
  97. @Override
  98. public void destroy() throws Exception {
  99. }
  100. @Override
  101. public void afterPropertiesSet() throws Exception {
  102. }
  103. }