For IntelliJ IDEA,
Android Studio or Eclipse



/** * ServerConfig转ServerTransportConfig * * @param serverConfig 服务端配置 * @return ServerTransportConfig 服务传输层配置 */ private static ServerTransportConfig convertConfig(ServerConfig serverConfig) { ServerTransportConfig serverTransportConfig = new ServerTransportConfig(); serverTransportConfig.setPort(serverConfig.getPort()); serverTransportConfig.setProtocolType(serverConfig.getProtocol()); serverTransportConfig.setHost(serverConfig.getBoundHost()); serverTransportConfig.setContextPath(serverConfig.getContextPath()); serverTransportConfig.setBizMaxThreads(serverConfig.getMaxThreads()); serverTransportConfig.setBizPoolType(serverConfig.getThreadPoolType()); serverTransportConfig.setIoThreads(serverConfig.getIoThreads()); serverTransportConfig.setChannelListeners(serverConfig.getOnConnect()); serverTransportConfig.setMaxConnection(serverConfig.getAccepts()); serverTransportConfig.setPayload(serverConfig.getPayload()); serverTransportConfig.setTelnet(serverConfig.isTelnet()); serverTransportConfig.setUseEpoll(serverConfig.isEpoll()); serverTransportConfig.setBizPoolQueueType(serverConfig.getQueueType()); serverTransportConfig.setBizPoolQueues(serverConfig.getQueues()); serverTransportConfig.setDaemon(serverConfig.isDaemon()); serverTransportConfig.setParameters(serverConfig.getParameters()); serverTransportConfig.setContainer(serverConfig.getTransport()); return serverTransportConfig; }
private void copyServerFields(ServerConfig serverConfig, ProtocolConfig protocolConfig) { protocolConfig.setId(serverConfig.getId()); protocolConfig.setName(serverConfig.getProtocol()); protocolConfig.setHost(serverConfig.getHost()); protocolConfig.setPort(serverConfig.getPort()); protocolConfig.setAccepts(serverConfig.getAccepts()); protocolConfig.setSerialization(serverConfig.getSerialization()); if (!StringUtils.CONTEXT_SEP.equals(serverConfig.getContextPath())) { protocolConfig.setContextpath(serverConfig.getContextPath()); } protocolConfig.setIothreads(serverConfig.getIoThreads()); protocolConfig.setThreadpool(serverConfig.getThreadPoolType()); protocolConfig.setThreads(serverConfig.getMaxThreads()); protocolConfig.setPayload(serverConfig.getPayload()); protocolConfig.setQueues(serverConfig.getQueues()); protocolConfig.setParameters(serverConfig.getParameters()); }
public static ThreadPoolExecutor initPool(ServerConfig serverConfig) { int minPoolSize = serverConfig.getCoreThreads(); int maxPoolSize = serverConfig.getMaxThreads(); int queueSize = serverConfig.getQueues(); int aliveTime = serverConfig.getAliveTime(); BlockingQueue<Runnable> poolQueue = queueSize > 0 ? new LinkedBlockingQueue<Runnable>( queueSize) : new SynchronousQueue<Runnable>(); return new ThreadPoolExecutor(minPoolSize, maxPoolSize, aliveTime, TimeUnit.MILLISECONDS, poolQueue); }
protected ThreadPoolExecutor initThreadPool(ServerConfig serverConfig) { ThreadPoolExecutor threadPool = BusinessPool.initPool(serverConfig); threadPool.setThreadFactory(new NamedThreadFactory("SEV-" + serverConfig.getProtocol().toUpperCase() + "-BIZ-" + serverConfig.getPort(), serverConfig.isDaemon())); threadPool.setRejectedExecutionHandler(new SofaRejectedExecutionHandler()); if (serverConfig.isPreStartCore()) { // 初始化核心线程池 threadPool.prestartAllCoreThreads(); } return threadPool; }
for (ServerConfig server : servers) { StringBuilder sb = new StringBuilder(200); String host = server.getVirtualHost(); // 虚拟ip if (host == null) { host = server.getHost(); if (NetUtils.isLocalHost(host) || NetUtils.isAnyHost(host)) { host = SystemInfo.getLocalHost(); sb.append(server.getProtocol()).append("://").append(host).append(":") .append(server.getPort()).append(server.getContextPath()).append("?version=1.0") .append(convertMap2Pair(metaData)); urls.add(sb.toString());
for (ServerConfig server : servers) { StringBuilder sb = new StringBuilder(200); sb.append(server.getProtocol()).append("://").append(server.getHost()) .append(":").append(server.getPort()).append(server.getContextPath()) .append(providerConfig.getInterfaceId()) .append("?uniqueId=").append(providerConfig.getUniqueId()) .append(getKeyPairs("weight", providerConfig.getWeight())) .append(getKeyPairs("register", providerConfig.isRegister())) .append(getKeyPairs("maxThreads", server.getMaxThreads())) .append(getKeyPairs("ioThreads", server.getIoThreads())) .append(getKeyPairs("threadPoolType", server.getThreadPoolType())) .append(getKeyPairs("accepts", server.getAccepts())) .append(getKeyPairs("dynamic", providerConfig.isDynamic())) .append(getKeyPairs(RpcConstants.CONFIG_KEY_RPC_VERSION, Version.RPC_VERSION));
String boundHost = serverConfig.getBoundHost(); if (boundHost == null) { String host = serverConfig.getHost(); if (StringUtils.isBlank(host)) { host = SystemInfo.getLocalHost(); serverConfig.setHost(host); boundHost = host; serverConfig.setBoundHost(boundHost); if (serverConfig.isAdaptivePort()) { int oriPort = serverConfig.getPort(); int port = NetUtils.getAvailablePort(boundHost, oriPort, RpcConfigs.getIntValue(RpcOptions.SERVER_PORT_END)); LOGGER.info("Changed port from {} to {} because the config port is disabled", oriPort, port); serverConfig.setPort(port);
private SofaNettyJaxrsServer buildServer() { // 生成Server对象 SofaNettyJaxrsServer httpServer = new SofaNettyJaxrsServer(serverConfig); int bossThreads = serverConfig.getIoThreads(); if (bossThreads > 0) { httpServer.setIoWorkerCount(bossThreads); // 其实是boss+worker线程 默认cpu*2 } httpServer.setExecutorThreadCount(serverConfig.getMaxThreads()); // 业务线程 httpServer.setMaxRequestSize(serverConfig.getPayload()); httpServer.setHostname(serverConfig.getBoundHost()); httpServer.setPort(serverConfig.getPort()); ResteasyDeployment resteasyDeployment = httpServer.getDeployment(); resteasyDeployment.start(); ResteasyProviderFactory providerFactory = resteasyDeployment.getProviderFactory(); registerProvider(providerFactory); return httpServer; }
public Id removeServerThreadPoolQueueSizeId(ServerConfig serverConfig) { String key = "rpc." + serverConfig.getProtocol() + ".threadpool.queue.size"; return serverConfigIds.remove(key); } }
@Override public void registerProcessor(ProviderConfig providerConfig, Invoker instance) { if (!isStarted()) { start(); } // 在httpserver中注册此jaxrs服务 if (LOGGER.isInfoEnabled()) { LOGGER.info("Register jaxrs service to base url http://" + serverConfig.getHost() + ":" + serverConfig.getPort() + serverConfig.getContextPath()); } try { Object obj = ProxyFactory.buildProxy(providerConfig.getProxy(), providerConfig.getProxyClass(), instance); httpServer.getDeployment().getRegistry() .addResourceFactory(new SofaResourceFactory(providerConfig, obj), serverConfig.getContextPath()); invokerCnt.incrementAndGet(); } catch (Exception e) { LOGGER.error("Register jaxrs service error", e); } }
String host = server.getVirtualHost(); if (host == null) { host = server.getHost(); if (NetUtils.isLocalHost(host) || NetUtils.isAnyHost(host)) { host = SystemInfo.getLocalHost(); instance.setPort(server.getPort());
protected RemotingServer initRemotingServer() { // 绑定到端口 RemotingServer remotingServer = new RpcServer(serverConfig.getPort()); remotingServer.registerUserProcessor(boltServerProcessor); return remotingServer; }
/** * 初始化Server实例 * * @param serverConfig 服务端配置 * @return Server */ public synchronized static Server getServer(ServerConfig serverConfig) { try { Server server = SERVER_MAP.get(Integer.toString(serverConfig.getPort())); if (server == null) { // 算下网卡和端口 resolveServerConfig(serverConfig); ExtensionClass<Server> ext = ExtensionLoaderFactory.getExtensionLoader(Server.class) .getExtensionClass(serverConfig.getProtocol()); if (ext == null) { throw ExceptionUtils.buildRuntime("server.protocol", serverConfig.getProtocol(), "Unsupported protocol of server!"); } server = ext.getExtInstance(); server.init(serverConfig); SERVER_MAP.put(serverConfig.getPort() + "", server); } return server; } catch (SofaRpcRuntimeException e) { throw e; } catch (Throwable e) { throw new SofaRpcRuntimeException(e.getMessage(), e); } }
protected ThreadPoolExecutor initThreadPool(ServerConfig serverConfig) { ThreadPoolExecutor threadPool = BusinessPool.initPool(serverConfig); threadPool.setThreadFactory(new NamedThreadFactory( "SEV-BOLT-BIZ-" + serverConfig.getPort(), serverConfig.isDaemon())); threadPool.setRejectedExecutionHandler(new SofaRejectedExecutionHandler()); if (serverConfig.isPreStartCore()) { // 初始化核心线程池 threadPool.prestartAllCoreThreads(); } return threadPool; }
@Override public void unRegisterProcessor(ProviderConfig providerConfig, boolean closeIfNoEntry) { if (!isStarted()) { return; } if (LOGGER.isInfoEnabled()) { LOGGER.info("Unregister jaxrs service to port {} and base path is {}", serverConfig.getPort(), serverConfig.getContextPath()); } try { httpServer.getDeployment().getRegistry() .removeRegistrations(providerConfig.getRef().getClass(), serverConfig.getContextPath()); invokerCnt.decrementAndGet(); } catch (Exception e) { LOGGER.error("Unregister jaxrs service error", e); } // 如果最后一个需要关闭,则关闭 if (closeIfNoEntry && invokerCnt.get() == 0) { stop(); } }
if (remotingServer.start(serverConfig.getBoundHost())) { if (LOGGER.isInfoEnabled()) { LOGGER.info("Bolt server has been bind to {}:{}", serverConfig.getBoundHost(), serverConfig.getPort());
try { int coreSize = serverConfig.getCoreThreads(); int maxSize = serverConfig.getMaxThreads(); int queueSize = serverConfig.getQueues();
String protocol = serverConfig.getProtocol(); String key = providerConfig.buildKey() + ":" + protocol; if (LOGGER.isInfoEnabled(appName)) { Server server = serverConfig.getServer(); if (server != null) { try { server.unRegisterProcessor(providerConfig, serverConfig.isAutoStart()); } catch (Exception e) { if (LOGGER.isWarnEnabled(appName)) { LOGGER.warnWithApp(appName, "Catch exception when unRegister processor to server: " + serverConfig.getId() + ", but you can ignore if it's called by JVM shutdown hook", e); String protocol = serverConfig.getProtocol(); String key = providerConfig.buildKey() + ":" + protocol; AtomicInteger cnt = EXPORTED_KEYS.get(key);
String protocol = serverConfig.getProtocol(); hasExportedInCurrent.put(serverConfig.getProtocol(), true); int maxProxyCount = providerConfig.getRepeatedExportLimit(); if (maxProxyCount > 0) { Server server = serverConfig.buildIfAbsent(); if (serverConfig.isAutoStart()) { server.start(); } catch (Exception e) { LOGGER.errorWithApp(appName, "Catch exception when register processor to server: " + serverConfig.getId(), e);
public static Map<String, String> convertProviderToMap(ProviderConfig providerConfig, ServerConfig server) { Map<String, String> metaData = new HashMap<String, String>(); metaData.put(RpcConstants.CONFIG_KEY_UNIQUEID, providerConfig.getUniqueId()); metaData.put(RpcConstants.CONFIG_KEY_INTERFACE, providerConfig.getInterfaceId()); metaData.put(RpcConstants.CONFIG_KEY_TIMEOUT, String.valueOf(providerConfig.getTimeout())); metaData.put(RpcConstants.CONFIG_KEY_DELAY, String.valueOf(providerConfig.getDelay())); metaData.put(RpcConstants.CONFIG_KEY_ID, providerConfig.getId()); metaData.put(RpcConstants.CONFIG_KEY_DYNAMIC, String.valueOf(providerConfig.isDynamic())); metaData.put(ProviderInfoAttrs.ATTR_WEIGHT, String.valueOf(providerConfig.getWeight())); metaData.put(RpcConstants.CONFIG_KEY_ACCEPTS, String.valueOf(server.getAccepts())); metaData.put(ProviderInfoAttrs.ATTR_START_TIME, String.valueOf(RpcRuntimeContext.now())); metaData.put(RpcConstants.CONFIG_KEY_APP_NAME, providerConfig.getAppName()); metaData.put(RpcConstants.CONFIG_KEY_SERIALIZATION, providerConfig.getSerialization()); metaData.put(RpcConstants.CONFIG_KEY_PROTOCOL, server.getProtocol()); if (null != providerConfig.getParameters()) { //noinspection unchecked metaData.putAll(providerConfig.getParameters()); } // add common attr metaData.put(RpcConstants.CONFIG_KEY_LANGUAGE, JAVA); metaData.put(RpcConstants.CONFIG_KEY_PID, RpcRuntimeContext.PID); metaData.put(RpcConstants.CONFIG_KEY_RPC_VERSION, String.valueOf(Version.RPC_VERSION)); return metaData; }