package vn.edu.rmit.sadi; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.net.ServerSocket; import java.net.Socket; public class Main { // using apache commons logging - java also has a logging package (since 1.4.2) private Log log = LogFactory.getLog(Main.class); private ServerSocket server; private DbUtil dbUtil; private static ApplicationContext ctx; public static void main(String[] args) { ctx = new ClassPathXmlApplicationContext("spring-context.xml"); Main m = ctx.getBean("main", Main.class); try { m.run(); } catch (Exception e) { e.printStackTrace(); } } public void setServer(ServerSocket server) { this.server = server; } public void setDbUtil(DbUtil dbUtil) { this.dbUtil = dbUtil; } private void run() throws Exception { log.info("Before checking DB"); dbUtil.createDb(); log.info("After checking DB"); log.info("Server started and waiting on client connections..."); while(true) { Socket client = server.accept(); log.info("Client connected..."); DbThread t = ctx.getBean("dbThread", DbThread.class); t.setClient(client); new Thread(t).start(); } } }