From 9988a146492b64cabfc2c3f6728cb0044344689c Mon Sep 17 00:00:00 2001 From: zhangxin10 Date: Wed, 23 Dec 2015 18:03:58 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=B0=86=E9=85=8D=E7=BD=AE=E6=8C=AA?= =?UTF-8?q?=E5=88=B0config.properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/cloud/config/ConfigInitializer.java | 71 +++++++++ .../ai/cloud/config/InitialConfigFilter.java | 39 +++++ .../java/com/ai/cloud/util/Constants.java | 141 ++++++++++-------- .../ai/cloud/util/HBaseConnectionUtil.java | 4 +- .../src/main/resources/config.properties | 2 + .../src/main/webapp/WEB-INF/web.xml | 101 +++++++------ 6 files changed, 249 insertions(+), 109 deletions(-) create mode 100644 skywalking-webui/src/main/java/com/ai/cloud/config/ConfigInitializer.java create mode 100644 skywalking-webui/src/main/java/com/ai/cloud/config/InitialConfigFilter.java create mode 100644 skywalking-webui/src/main/resources/config.properties diff --git a/skywalking-webui/src/main/java/com/ai/cloud/config/ConfigInitializer.java b/skywalking-webui/src/main/java/com/ai/cloud/config/ConfigInitializer.java new file mode 100644 index 000000000..67b2a399d --- /dev/null +++ b/skywalking-webui/src/main/java/com/ai/cloud/config/ConfigInitializer.java @@ -0,0 +1,71 @@ +package com.ai.cloud.config; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.LinkedList; +import java.util.Properties; + +public class ConfigInitializer { + + public static Logger logger = LogManager.getLogger(ConfigInitializer.class); + + public static void initialize(Properties properties, Class rootConfigType) throws IllegalAccessException { + initNextLevel(properties, rootConfigType, new ConfigDesc()); + } + + private static void initNextLevel(Properties properties, Class recentConfigType, ConfigDesc parentDesc) throws NumberFormatException, IllegalArgumentException, IllegalAccessException { + for (Field field : recentConfigType.getFields()) { + if (Modifier.isPublic(field.getModifiers()) && Modifier.isStatic(field.getModifiers())) { + String configKey = (parentDesc + "." + + field.getName()).toLowerCase(); + String value = properties.getProperty(configKey); + if (value != null) { + if (field.getType().equals(int.class)) + field.set(null, Integer.valueOf(value)); + if (field.getType().equals(String.class)) + field.set(null, value); + if (field.getType().equals(long.class)) + field.set(null, Long.valueOf(value)); + } + logger.debug("{}={}", configKey, field.get(null)); + } + } + for (Class innerConfiguration : recentConfigType.getClasses()) { + parentDesc.append(innerConfiguration.getSimpleName()); + initNextLevel(properties, innerConfiguration, parentDesc); + parentDesc.removeLastDesc(); + } + } +} + +class ConfigDesc { + private LinkedList descs = new LinkedList(); + + void append(String currentDesc) { + descs.addLast(currentDesc); + } + + void removeLastDesc() { + descs.removeLast(); + } + + @Override + public String toString() { + if (descs.size() == 0) { + return ""; + } + StringBuilder ret = new StringBuilder(descs.getFirst()); + boolean first = true; + for (String desc : descs) { + if (first) { + first = false; + continue; + } + ret.append(".").append(desc); + } + return ret.toString(); + } +} diff --git a/skywalking-webui/src/main/java/com/ai/cloud/config/InitialConfigFilter.java b/skywalking-webui/src/main/java/com/ai/cloud/config/InitialConfigFilter.java new file mode 100644 index 000000000..ee84e4058 --- /dev/null +++ b/skywalking-webui/src/main/java/com/ai/cloud/config/InitialConfigFilter.java @@ -0,0 +1,39 @@ +package com.ai.cloud.config; + +import com.ai.cloud.util.Constants; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.servlet.*; +import java.io.IOException; +import java.util.Properties; + +public class InitialConfigFilter implements Filter { + + private Logger logger = LogManager.getLogger(InitialConfigFilter.class); + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + Properties properties = new Properties(); + try { + properties.load(InitialConfigFilter.class.getResourceAsStream("/config.properties")); + ConfigInitializer.initialize(properties, Constants.class); + } catch (IllegalAccessException e) { + logger.error("Failed to init config.", e); + System.exit(-1); + } catch (IOException e) { + logger.error("Failed to init config.", e); + System.exit(-1); + } + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + filterChain.doFilter(servletRequest, servletResponse); + } + + @Override + public void destroy() { + + } +} diff --git a/skywalking-webui/src/main/java/com/ai/cloud/util/Constants.java b/skywalking-webui/src/main/java/com/ai/cloud/util/Constants.java index cc18aba17..e72bd339c 100644 --- a/skywalking-webui/src/main/java/com/ai/cloud/util/Constants.java +++ b/skywalking-webui/src/main/java/com/ai/cloud/util/Constants.java @@ -1,5 +1,5 @@ /** - * + * */ package com.ai.cloud.util; @@ -8,75 +8,92 @@ import java.util.Map; /** * 常量类 - * + * * @author tz - * @date 2015年11月10日 下午2:51:25 * @version V0.1 + * @date 2015年11月10日 下午2:51:25 */ public class Constants { - public static final String VERSION_STR = "version"; + public static final String VERSION_STR = "version"; - public static final String VERSION_VAL = "0.1"; + public static final String VERSION_VAL = "0.1"; - /** hbase集群 */ - public static final String QUORUM = "10.1.235.197,10.1.235.198,10.1.235.199"; - /** zk端口 */ - public static final String CLIENT_PORT = "29181"; - /** hbase表名 */ - public static final String TABLE_NAME_CHAIN = "sw-call-chain"; - /** 层级分割符 */ - public static final char VAL_SPLIT_CHAR = '.'; - /** RPC远端调用节点结束标识 */ - public static final String RPC_END_FLAG = "-S"; + public static class HBaseConfig { + /** + * hbase集群 + */ + public static String QUORUM; + /** + * zk端口 + */ + public static String CLIENT_PORT; + } - public static final String SPAN_TYPE_M = "M"; - public static final String SPAN_TYPE_J = "J"; - public static final String SPAN_TYPE_W = "W"; - public static final String SPAN_TYPE_D = "D"; - public static final String SPAN_TYPE_U = "U"; - /** SPAN_TYPE码表 */ - public static Map SPAN_TYPE_MAP = new HashMap() { - { - put("M", "JAVA"); - put("J", "JDBC"); - put("W", "WEB"); - put("D", "DUBBO"); - put("U", "UNKNOWN"); - } - }; + /** + * hbase表名 + */ + public static final String TABLE_NAME_CHAIN = "sw-call-chain"; + /** + * 层级分割符 + */ + public static final char VAL_SPLIT_CHAR = '.'; + /** + * RPC远端调用节点结束标识 + */ + public static final String RPC_END_FLAG = "-S"; - public static final String STATUS_CODE_0 = "0"; - public static final String STATUS_CODE_1 = "1"; - public static final String STATUS_CODE_9 = "9"; - /** STATUS_CODE码表 */ - public static Map STATUS_CODE_MAP = new HashMap() { - { - put("0", "OK"); - put("1", "FAIL"); - put("9", "MISSING"); - } - }; - - public static final String JSON_RESULT_KEY_RESULT = "result"; - public static final String JSON_RESULT_KEY_RESULT_OK = "OK"; - public static final String JSON_RESULT_KEY_RESULT_FAIL = "FAIL"; - - public static final String JSON_RESULT_KEY_RESULT_MSG = "msg"; - public static final String JSON_RESULT_KEY_RESULT_DATA = "data"; - - public static final String ROLE_TYPE_USER = "user"; - public static final String ROLE_TYPE_ADMIN = "admin"; - - public static final String STR_VAL_A = "A"; - public static final String STR_VAL_P = "P"; - - public static final String IS_GLOBAL_FALG_0 = "0"; - public static final String IS_GLOBAL_FALG_1 = "1"; - - public static final String TODO_TYPE_0 = "0"; - public static final String TODO_TYPE_1 = "1"; - - public static final String MAIL_SPLIT_CHAR = ","; + public static final String SPAN_TYPE_M = "M"; + public static final String SPAN_TYPE_J = "J"; + public static final String SPAN_TYPE_W = "W"; + public static final String SPAN_TYPE_D = "D"; + public static final String SPAN_TYPE_U = "U"; + /** + * SPAN_TYPE码表 + */ + public static Map SPAN_TYPE_MAP = new HashMap() { + { + put("M", "JAVA"); + put("J", "JDBC"); + put("W", "WEB"); + put("D", "DUBBO"); + put("U", "UNKNOWN"); + } + }; + + public static final String STATUS_CODE_0 = "0"; + public static final String STATUS_CODE_1 = "1"; + public static final String STATUS_CODE_9 = "9"; + /** + * STATUS_CODE码表 + */ + public static Map STATUS_CODE_MAP = new HashMap() { + { + put("0", "OK"); + put("1", "FAIL"); + put("9", "MISSING"); + } + }; + + public static final String JSON_RESULT_KEY_RESULT = "result"; + public static final String JSON_RESULT_KEY_RESULT_OK = "OK"; + public static final String JSON_RESULT_KEY_RESULT_FAIL = "FAIL"; + + public static final String JSON_RESULT_KEY_RESULT_MSG = "msg"; + public static final String JSON_RESULT_KEY_RESULT_DATA = "data"; + + public static final String ROLE_TYPE_USER = "user"; + public static final String ROLE_TYPE_ADMIN = "admin"; + + public static final String STR_VAL_A = "A"; + public static final String STR_VAL_P = "P"; + + public static final String IS_GLOBAL_FALG_0 = "0"; + public static final String IS_GLOBAL_FALG_1 = "1"; + + public static final String TODO_TYPE_0 = "0"; + public static final String TODO_TYPE_1 = "1"; + + public static final String MAIL_SPLIT_CHAR = ","; } diff --git a/skywalking-webui/src/main/java/com/ai/cloud/util/HBaseConnectionUtil.java b/skywalking-webui/src/main/java/com/ai/cloud/util/HBaseConnectionUtil.java index dbab3b33e..f7302f89f 100644 --- a/skywalking-webui/src/main/java/com/ai/cloud/util/HBaseConnectionUtil.java +++ b/skywalking-webui/src/main/java/com/ai/cloud/util/HBaseConnectionUtil.java @@ -27,8 +27,8 @@ public class HBaseConnectionUtil { try { if (configuration == null) { configuration = HBaseConfiguration.create(); - configuration.set("hbase.zookeeper.quorum", Constants.QUORUM); - configuration.set("hbase.zookeeper.property.clientPort", Constants.CLIENT_PORT); + configuration.set("hbase.zookeeper.quorum", Constants.HBaseConfig.QUORUM); + configuration.set("hbase.zookeeper.property.clientPort", Constants.HBaseConfig.CLIENT_PORT); connection = ConnectionFactory.createConnection(configuration); } } catch (Exception e) { diff --git a/skywalking-webui/src/main/resources/config.properties b/skywalking-webui/src/main/resources/config.properties new file mode 100644 index 000000000..5ce38db81 --- /dev/null +++ b/skywalking-webui/src/main/resources/config.properties @@ -0,0 +1,2 @@ +hbaseconfig.quorum=10.1.235.197,10.1.235.198,10.1.235.199 +hbaseconfig.client_port=29181 \ No newline at end of file diff --git a/skywalking-webui/src/main/webapp/WEB-INF/web.xml b/skywalking-webui/src/main/webapp/WEB-INF/web.xml index 9aadfa300..db26d5cde 100644 --- a/skywalking-webui/src/main/webapp/WEB-INF/web.xml +++ b/skywalking-webui/src/main/webapp/WEB-INF/web.xml @@ -1,52 +1,63 @@ - skywalking-webui - - springmvc - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - - classpath*:spring/springmvc-servlet.xml - - - 1 - - - CharacterEncodingFilter - org.springframework.web.filter.CharacterEncodingFilter - - encoding - UTF-8 - - - forceEncoding - true - - + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" + version="2.5"> + skywalking-webui - - springmvc - / - - - CharacterEncodingFilter - springmvc - + + InitialConfig + com.ai.cloud.config.InitialConfigFilter + - - 404 - /404 - - - 500 - /500 - + + InitialConfig + / + - - index - + + springmvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + + classpath*:spring/springmvc-servlet.xml + + + 1 + + + CharacterEncodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + forceEncoding + true + + + + + springmvc + / + + + CharacterEncodingFilter + springmvc + + + + 404 + /404 + + + 500 + /500 + + + + index +