package com.shkpr.service.proxycenter.globalcache; import com.shkpr.service.proxycenter.commtools.CommTool; import javax.validation.Validator; import javax.validation.ConstraintViolation; import javax.validation.executable.ExecutableValidator; import java.util.*; public class GlobalData { public final static String ORIGIN_KEY = "Y^c3b5d3z1"; //原始口令:阳春布德泽 private boolean mBHttpStatusAlready200 = true; //HttpStatus返回码是不是总是返回200ok private boolean mBTokenIsUnique = false; private boolean mBSvrTestMode = false; private Validator mValidForParam = null; private ExecutableValidator mValidForFun = null; private volatile boolean mBUseLocalCache = true; //是否启用本地缓存 private String mStrServerId = ""; //本服务的ID private int mNOwnerMachineIndex = 0; //本服务所在的部署机器的索引编号 private int mNOwnerServiceIndex = 0; //本服务在部署机器上的服务索引编号 private int mNCpuCoresForEnableAsyncSubTask = 8;//启动异步子任务的最小cpu核心数 private volatile boolean mBSwitchTraceLog = true;//是否开启基于TraceId的日志记录 private String mStrOperatorAccount = ""; private String mStrOperatorPassword = ""; private Map proxyToAddress = new HashMap<>(); private Map proxyToPassword = new HashMap<>(); private Map proxyToUri = new HashMap<>(); private long mTmUTCServiceOnline = 1580486400000L; //服务上线的时间,默认为2020-02-01 00:00:00 private String mStrInternalCallPassword = ""; //本机的内部通信可信任口令 private static volatile GlobalData msInstance = null; public static GlobalData getInstance(){ if (msInstance == null){ synchronized (GlobalData.class){ if (msInstance == null) msInstance = new GlobalData(); } } return msInstance; } private GlobalData() { } public void setCpuCoresForEnableAsyncSubTask(int nCpuCores){ this.mNCpuCoresForEnableAsyncSubTask = nCpuCores; } public boolean isEnableAsyncSubTask(){ //cpu核心数>=指定配置时才启用异步子任务(注:过多线程并发可增加线程间的切换开销,导致单个请求执行时间拉长) return mNCpuCores >= mNCpuCoresForEnableAsyncSubTask; } private int mNCpuCores = 1; public int getCpuCores() { return mNCpuCores; } public void setCpuCores(int mNCpuCores) { this.mNCpuCores = mNCpuCores; } public boolean checkObjectByValidator(T object, Class... classForObject){ if (mValidForParam != null){ Set> constraintViolations = mValidForParam.validate(object, classForObject); if (!(constraintViolations == null || constraintViolations.size() <= 0)) return false; } return true; } public Validator getValidForParam() { return mValidForParam; } public void setValidForParam(Validator mValidForParam) { this.mValidForParam = mValidForParam; } public ExecutableValidator getValidForFun() { return mValidForFun; } public void setValidForFun(ExecutableValidator mValidForFun) { this.mValidForFun = mValidForFun; } public boolean isTokenMustUnique() { return mBTokenIsUnique; } public void setTokenMustUnique(boolean mBTokenIsUnique) { this.mBTokenIsUnique = mBTokenIsUnique; } public boolean isSvrTestMode() { return mBSvrTestMode; } public void setSvrTestMode(boolean mBSvrTestMode) { this.mBSvrTestMode = mBSvrTestMode; } public boolean isHttpStatusAlready200() { return mBHttpStatusAlready200; } public void setHttpStatusAlready200(boolean mBHttpStatusAlready200) { this.mBHttpStatusAlready200 = mBHttpStatusAlready200; } public boolean isUseLocalCache() { return mBUseLocalCache; } public void setUseLocalCache(boolean mBUseLocalCache) { this.mBUseLocalCache = mBUseLocalCache; } public String getServerId() { return mStrServerId; } public void setServerId(String mStrServerId) { this.mStrServerId = mStrServerId; } public int getNOwnerMachineIndex() { return mNOwnerMachineIndex; } public void setNOwnerMachineIndex(int mNOwnerMachineIndex) { this.mNOwnerMachineIndex = mNOwnerMachineIndex; } public int getNOwnerServiceIndex() { return mNOwnerServiceIndex; } public void setNOwnerServiceIndex(int mNOwnerServiceIndex) { this.mNOwnerServiceIndex = mNOwnerServiceIndex; } public boolean isSwitchTraceLog() { return mBSwitchTraceLog; } public void setSwitchTraceLog(boolean mBSwitchTraceLog) { this.mBSwitchTraceLog = mBSwitchTraceLog; } public String getStrOperatorAccount() { return mStrOperatorAccount; } public void setStrOperatorAccount(String mStrOperatorAccount) { this.mStrOperatorAccount = mStrOperatorAccount; } public String getStrOperatorPassword() { return mStrOperatorPassword; } public void setStrOperatorPassword(String mStrOperatorPassword) { this.mStrOperatorPassword = mStrOperatorPassword; } public String getInternalCallPassword() { return mStrInternalCallPassword; } public void setInternalCallPassword(String mStrInternalCallPassword) { this.mStrInternalCallPassword = mStrInternalCallPassword; } public Map getProxyToAddress() { return proxyToAddress; } public void initProxyToAddress(Map proxyToAddress) { this.proxyToAddress.clear(); if (CommTool.mapSize(proxyToAddress) > 0) this.proxyToAddress.putAll(proxyToAddress); } public Map getProxyToPassword() { return proxyToPassword; } public void initProxyToPassword(Map proxyToPassword) { this.proxyToPassword.clear(); if (CommTool.mapSize(proxyToPassword) > 0) this.proxyToPassword.putAll(proxyToPassword); } public Map getProxyToUri() { return proxyToUri; } public void initProxyToUri(Map proxyToUri) { this.proxyToUri.clear(); if (CommTool.mapSize(proxyToUri) > 0) this.proxyToUri.putAll(proxyToUri); } }