IT-KIMI_SHI\SINOIT.KIMI
2018-06-01 521993214708c66a5498bd669c94a661c11484b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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;
        }
    }
}