package org.openslx.imagemaster; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.apache.thrift.transport.TTransportException; import org.openslx.imagemaster.serverconnection.CrcScheduler; import org.openslx.imagemaster.thrift.server.BinaryListener; import org.slf4j.LoggerFactory; /** * The main class that starts all the services. */ public class App { private static Logger log = Logger.getLogger( App.class ); private static List servers = new ArrayList<>(); static { // This is a temporary workaround for this annoying log4j error msg. // It's initializing the logger before anything else is done. LoggerFactory.getLogger( "ROOT" ); } public static void main( String[] args ) throws TTransportException, NoSuchAlgorithmException { // Init logging log.info( "Starting Application" ); // Create binary listener Thread t; t = new Thread( new BinaryListener( 9090, false ), "Thrift PLAIN" ); servers.add( t ); t.start(); try { t = new Thread( new BinaryListener( 9091, true ), "Thrift TLS" ); servers.add( t ); t.start(); } catch ( Exception e ) { log.warn( "No TLS available:", e ); } // start the crc checking scheduler CrcScheduler.startScheduling(); // Run more servers // ... // Wait for all servers to die for ( Thread wait : servers ) { boolean success = false; while ( !success ) { try { wait.join(); success = true; } catch ( InterruptedException e ) { // Do nothing... } } } log.info( "All Servers shut down, exiting..." ); } }