/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.remoting.provider.config; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import com.dianping.pigeon.config.ConfigManager; import com.dianping.pigeon.config.ConfigManagerLoader; import com.dianping.pigeon.remoting.common.util.Constants; import com.dianping.pigeon.util.LangUtils; public class ServerConfig { private static ConfigManager configManager = ConfigManagerLoader.getConfigManager(); public static final int DEFAULT_PORT = getDefaultPort(); public static final int DEFAULT_HTTP_PORT = 4080; private int port = configManager.getIntValue("pigeon.server.defaultport", DEFAULT_PORT); private int httpPort = configManager.getIntValue("pigeon.httpserver.defaultport", DEFAULT_HTTP_PORT); private boolean autoSelectPort = true; private boolean enableTest = configManager .getBooleanValue(Constants.KEY_TEST_ENABLE, Constants.DEFAULT_TEST_ENABLE); private int corePoolSize = Constants.PROVIDER_POOL_CORE_SIZE; private int maxPoolSize = Constants.PROVIDER_POOL_MAX_SIZE; private int workQueueSize = Constants.PROVIDER_POOL_QUEUE_SIZE; private String suffix = configManager.getGroup(); private String protocol = Constants.PROTOCOL_DEFAULT; private String env; private String ip; private int actualPort = port; public ServerConfig() { } public static int getDefaultPort() { int port = 4040; try { String app = configManager.getAppName(); if (StringUtils.isNotBlank(app)) { port = LangUtils.hash(app, 6000, 2000); } } catch (Throwable t) { } return port; } public int getActualPort() { return actualPort; } public void setActualPort(int actualPort) { this.actualPort = actualPort; } public String getEnv() { return env; } public void setEnv(String env) { this.env = env; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public boolean isEnableTest() { return enableTest; } public void setEnableTest(boolean enableTest) { this.enableTest = enableTest; } public boolean isAutoSelectPort() { return autoSelectPort; } public void setAutoSelectPort(boolean autoSelectPort) { this.autoSelectPort = autoSelectPort; } public int getHttpPort() { return httpPort; } public void setHttpPort(int httpPort) { this.httpPort = httpPort; } public String getProtocol() { return protocol; } public void setProtocol(String protocol) { this.protocol = protocol; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { if (!StringUtils.isBlank(suffix)) { this.suffix = suffix; } } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public int getCorePoolSize() { if (corePoolSize <= 0) { corePoolSize = 1; } else if (corePoolSize > 300) { corePoolSize = 300; } return corePoolSize; } public void setCorePoolSize(int corePoolSize) { this.corePoolSize = corePoolSize; } public int getMaxPoolSize() { if (maxPoolSize <= 0) { maxPoolSize = 5; } else if (maxPoolSize > 1000) { maxPoolSize = 1000; } return maxPoolSize; } public void setMaxPoolSize(int maxPoolSize) { this.maxPoolSize = maxPoolSize; } public int getWorkQueueSize() { if (workQueueSize < 1) { workQueueSize = 1; } else if (workQueueSize > 50000) { workQueueSize = 50000; } return workQueueSize; } public void setWorkQueueSize(int workQueueSize) { this.workQueueSize = workQueueSize; } @Override public String toString() { return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); } }