List of usage examples for org.springframework.context.support ClassPathXmlApplicationContext addApplicationListener
@Override public void addApplicationListener(ApplicationListener<?> listener)
From source file:fr.gael.dhus.DHuS.java
/** Starts the DHuS (starts Tomcat, creates the Spring application context. */ public static void start() { // Transfer System.err in logger System.setErr(new PrintStream(new LoggingOutputStream(LOGGER), true)); String version = DHuS.class.getPackage().getImplementationVersion(); // Force ehcache not to call home System.setProperty("net.sf.ehcache.skipUpdateCheck", "true"); System.setProperty("org.terracotta.quartz.skipUpdateCheck", "true"); System.setProperty("user.timezone", "UTC"); TimeZone.setDefault(TimeZone.getTimeZone("UTC")); System.setProperty("fr.gael.dhus.version", version == null ? "dev" : version); if (!SystemService.restore()) { LOGGER.error("Cannot run system restoration."); LOGGER.error("Check the restoration file \"" + SystemService.RESTORATION_PROPERTIES + "\" from the current directory."); System.exit(1);/*ww w . ja va2 s . com*/ } Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { if ((server != null) && server.isRunning()) { try { server.stop(); } catch (TomcatException e) { e.printStackTrace(); } } } })); // Always add JMSAppender //Logger rootLogger = LogManager.getRootLogger (); //org.apache.logging.log4j.core.Logger coreLogger = //(org.apache.logging.log4j.core.Logger)rootLogger; //JMSAppender jmsAppender = JMSAppender.createAppender (); //coreLogger.addAppender (jmsAppender); try { // Activates the resolver for Drb DrbFactoryResolver.setMetadataResolver(new DrbCortexMetadataResolver(DrbCortexModel.getDefaultModel())); } catch (IOException e) { LOGGER.error("Resolver cannot be handled."); //logger.error (new Message(MessageType.SYSTEM, //"Resolver cannot be handled.")); } LOGGER.info("Launching Data Hub Service..."); //logger.info (new Message(MessageType.SYSTEM, //"Loading Data Hub Service...")); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "classpath:fr/gael/dhus/spring/dhus-core-context.xml"); context.registerShutdownHook(); // Registers ContextClosedEvent listeners to properly save states before // the Spring context is destroyed. ApplicationListener sync_sv = context.getBean(ISynchronizerService.class); context.addApplicationListener(sync_sv); // Initialize Database Incoming folder IncomingManager incoming_manager = (IncomingManager) context.getBean("incomingManager"); incoming_manager.initIncoming(); // Initialize DHuS loggers //jmsAppender.cleanWaitingLogs (); //logger.info (new Message(MessageType.SYSTEM, "DHuS Started")); try { //ftp = xml.getBean (FtpServer.class); //ftp.start (); server = ApplicationContextProvider.getBean(TomcatServer.class); server.init(); LOGGER.info("Starting server " + server.getClass() + "..."); //logger.info (new Message(MessageType.SYSTEM, "Starting server...")); server.start(); //logger.info (new Message(MessageType.SYSTEM, "Server started.")); LOGGER.info("Server started."); // Initialises SolrDAO SolrDao solr_dao = (SolrDao) context.getBean("solrDao"); solr_dao.initServerStarted(); Map<String, WebApplication> webapps = context.getBeansOfType(WebApplication.class); for (String beanName : webapps.keySet()) { server.install(webapps.get(beanName)); } fr.gael.dhus.server.http.web.WebApplication.installAll(server); WebServlet.installAll(server); WebPostProcess.launchAll(); LOGGER.info("Server is ready..."); started = true; //InitializableComponent.initializeAll (); //logger.info (new Message(MessageType.SYSTEM, "Server is ready...")); server.await(); } catch (Exception e) { LOGGER.error("Cannot start system.", e); //logger.error (new Message(MessageType.SYSTEM, "Cannot start DHuS."), e); //ftp.stop (); System.exit(1); } }