import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* Copyright @ 2013QIANLONG.
* All right reserved.
* Class Name : com.mobanker.config.core.zookeeper.config
* Description :
* Author : gaohailiang
* Date : 2016/1/18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@SuppressWarnings("all")
public class ZookeeperConfig implements Serializable {
private static final long serialVersionUID = 1L;
private String connection ;
private String nameSpace ;
private String staticConfigPath ;
private String dynamicConfigPath ;
/**
* 方法 setZookeeperConfig 功能描述 :通过反射、根据application.properties中读取到的
* 属性props,设置zookeeperConfig
* @author cailinfeng
* @createTime 2016/1/19
* @param
* @return
*
*/
public static ZookeeperConfig setZookeeperConfig(Properties props) throws Exception{
/**
* 通过反射,遍历props,设置zookeeperConfig配置
*/
ZookeeperConfig zookeeperConfig = new ZookeeperConfig();
Class classType = zookeeperConfig.getClass();
Method[] methods = classType.getMethods();
Map<String, Method> methodMap = new HashMap<String, Method>();
for (Method method : methods) {
methodMap.put(method.getName(), method);
}
Map<String, Class> typeMap = new HashMap<String, Class>();
Map<String, Field> fieldMap = new HashMap<String, Field>();
for (Class<?> clazz = classType; clazz != Object.class; clazz = clazz.getSuperclass()) {
try {
Field[] declaredFields = clazz.getDeclaredFields();
for (Field field : declaredFields) {
if (!fieldMap.containsKey(field.getName())) {
fieldMap.put(field.getName(), field);
typeMap.put(field.getName(), field.getType());
}
}
} catch (Exception e) {
// 这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
// 如果这里的异常打印或者往外抛,则就不会执行clazz =
// clazz.getSuperclass(),最后就不会进入到父类中了
}
}
for (Field field : fieldMap.values()) {
String fieldName = field.getName();
String fieldNameSub = null;
if (fieldName.length() == 1) {
fieldNameSub = fieldName.substring(0, 1).toLowerCase();
} else {
fieldNameSub = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1, fieldName.length());
}
String setMethodName = "set" + fieldNameSub;
Method setMethod = methodMap.get(setMethodName);
for(Object key : props.keySet()){
if((ZookeeperConstants.prefix+fieldName).equalsIgnoreCase((String) key)){
setMethod.invoke(zookeeperConfig,props.get(key));
}
}
}
return zookeeperConfig;
}
}
分享到:
相关推荐
NULL 博文链接:https://shift-alt-ctrl.iteye.com/blog/1859725
zookeeper未授权访问修复建议
通过Zookeeper实现系统配置的管理
一款好用的zookeeper配置内容...带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户权限:admin/guest。 github上有源码,这个是打包后的jar文件,可以直接通过jre来运行。
node_config_zookeeper 该模块是 nodejs 的配置管理使用 zookeeper。 入门 连接zookeeper客户端( node-zookeeper-client 模块); var zookeeper = require('node-zookeeper-client'), addr = 'localhost:2181';...
zookeeper webmanager.war 配置管理界面后台 支持导入 导出 将war部署到tomcat下,就可以通过http://127.0.0.1:8080/config-web/访问
介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux,也适用于ZooKeeper-3.4.8。 ZooKeeper节点间不需要互登录,因此不用配置免密码登录。
使用zookeeper管理redis集群并写入master并从slave读取 所以,我们应该有一个 ping 服务器,像这样安装: 1.npm install -g node-redis-failover 2.cd 到 bin 和 ./redis-failover -c ../examples/config.json 在...
zookeeperConfPath='/opt/app/kafka_2.11-2.1.0/config/zookeeper.properties' kafkaPath='/opt/app/kafka_2.11-2.1.0/bin' kafkaConfPath='/opt/app/kafka_2.11-2.1.0/config/server.properties' cronTab='*/5 * * ...
该压缩包,包含多个文件,一个 zkui 的配置文件 config.cfg,zkui-2.0-SNAPSHOT.jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar ,启动命令文件(windows、Linux) 下载完成后,修改配置文件,指向 zookeeper ...
安装和配置kafka:1 vim config/ server.properties2 数字改成zookeeper对应的myid数字3 是本机ip,端口不要改4
linux与window上都可以运行 ...>nohup bin/zookeeper-server-start.sh config/zookeeper.properties >output 2>&1 & 启动kafka命令: >nohup bin/kafka-server-start.sh config/server.properties >output 2>&1 &
Config toolkit 用于简化从本地配置文件到 zookeeper 的迁移。在大型集群和分布式应用中,配置不宜分散到集群结点中,应该集中管理.依赖JAVA 7 TOMCAT 7 for ConfigWeb模块Config Toolkit - 封装应用属性配置的获取...
基于zookeeper实现的配置管理中心,并提供了整合spring的API-config-center
center := NewConfigCenter("", nil, "/usr/local/vntop/config_center/local_cache","json") module := center.GetModule("/test.json") fmt.Println("--------------------a:", module.GetInt("a")) ``` 2. TODO ...
用法环境变量单节点超简单设置: docker run -d -p 2181:2181 -e ZK_CONFIG=clientPort=2181 -e ZK_ID=1 bobrik/zookeeper聚类与单节点相同,但您应该向ZK_CONFIG添加更多配置,对于 3 节点集群,一些生产就绪字符串...
使用方法把bin目录内的4个文件复制到zookeeper根目录下(和zookeeper-x.x.jar同一目录,参考图1),config.txt为可选的配置模板文件。运行start.bat进行安装/卸载Windows服务、管理服务运行/停止/重启、更新配置、...
ZKConfig - 一个动物园管理员配置管理器介绍ZKConfig... ConfigExporter.java - 显示 ZooKeeper 中的所有属性。 ConfigImporter.java - 从config-import.properties导入属性(它们将覆盖旧的)。 log.html - 日志。参考
zkui,zookeeper的界面管理工具,使用jdk1.8编译而成。下载可用,jdk1.8用户无需重新编译。包含zkui要求的config文件
idworker-基于zookeeper,snowflake的分布式统一ID生成工具 是什么 idworker是一个基于zookeeper和snowflake算法的分布式统一ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和...