package frame.server; import org.apache.log4j.Logger; import frame.config.LoaderContainer; import frame.config.Configer; import frame.config.ILoader; import frame.config.ContextConfigerLoader; import frame.schedule.Schedule; public class ServerInstance { private static Logger logger; private static ServerInstance instance; private String version; public static boolean Terminated; static { logger = Logger.getLogger(ServerInstance.class); } public ServerInstance() { version = "1.0.0.1"; } public static void startService() { try { instance = new ServerInstance(); instance.start(); } catch (Exception e) { logger.error(e); e.printStackTrace(); } } public static void stopService() { try { instance.stop(); } catch (Exception e) { logger.error(e); e.printStackTrace(); } } public void start() throws Exception { try { logger.info("server is startting..."); logger.debug("server root path is " + Configer.getPath_Application()); ContextConfigerLoader configerLoader = ContextConfigerLoader.getInstance(); configerLoader.load(); LoaderContainer loaderContainer = LoaderContainer.getInstance(); for (ILoader loader : loaderContainer) { if (loader.isActive()) { logger.info("load config " + loader.getName()); loader.load(); } else { logger.info("loader [" + loader.getName() + "] is not acitve"); } } configerLoader.loadClasses(); } catch (Exception e) { e.printStackTrace(); } finally { printStartUpMessage(); } } public void stop() { logger.info("internal server is stopping..."); if (Schedule.isActive()) { Schedule.shutdown(); } logger.info("internal server has been stopped"); } public void restart() throws Exception { stop(); start(); } private static String echoString(String word, int count) { StringBuilder result = new StringBuilder(); for (int i = 1; i <= count; i++) { result.append(word); } return result.toString(); } private void printStartUpMessage() { int length_total = 40; long total = Math.round((Runtime.getRuntime().totalMemory()) / (1024.0 * 1024)); long max = Math.round((Runtime.getRuntime().maxMemory()) / (1024.0 * 1024)); String envirenment = Configer.getParam("EnvironmentName"); System.out.println("--->>> " + envirenment + " --->>>"); System.out.println(echoString("*", length_total + 2)); printMessage("Total Memory:" + total + "M", length_total); printMessage("Max Memory:" + max + "M", length_total); printMessage(version, length_total); System.out.println(echoString("*", length_total + 2)); } private void printMessage(String message, int totalLength) { MessagePos messagePos = new MessagePos(totalLength, message); System.out.println("*" + echoString(" ", messagePos.length_begin) + message + echoString(" ", messagePos.length_end) + "*"); } private class MessagePos { private int length_begin; private int length_end; private int length_message; public MessagePos(int totalLength, String message) { length_message = message.length(); length_begin = (totalLength - length_message) / 2; length_end = totalLength - length_begin - length_message; } } }