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;
|
}
|
}
|
}
|