zoukankan      html  css  js  c++  java
  • 【DUBBO】Dubbo:protocol 的配置项

    【一】:配置项

    <dubbo:protocol id="标识" port="端口号" name="名字"/>
    View Code


    【二】:配置解析器
    -->具体解析器为com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler配置的com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser、

    【三】:配置目标
    -->这个配置会向IOC容器中注册一个bean,该class为com.alibaba.dubbo.config.ProtocolConfig
    -->这个bean描述当前项目使用的协议的相关信息。
    -->描述属性:id,name(服务协议),host(服务IP地址(多网卡时使用)),port(服务端口),contextpath(上下文路径),threadpool(线程池类型),threads(线程池大小(固定大小)),iothreads(IO线程池大小(固定大小)),queues(线程池队列大小),accepts(最大接收连接数),codec(协议编码),serialization(序列化方式),charset(字符集),payload(最大请求数据长度),buffer(缓存区大小),heartbeat(心跳间隔),accesslog(访问日志),transporter( 网络传输方式),exchanger(信息交换方式),dispatcher(信息线程模型派发方式),networker(对称网络组网方式),server(服务器端实现),client(客户端实现),telnet(支持的telnet命令,多个命令用逗号分隔),prompt(命令行提示符),status(status检查),register(是否注册),keepAlive(是否长连接),optimizer(序列化的优化器的实现类名),extension(扩展参数),parameters(参数),isDefault(是否为缺省)

    【四】:类

    /*
     * Copyright 1999-2011 Alibaba Group.
     *  
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *  
     *      http://www.apache.org/licenses/LICENSE-2.0
     *  
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package com.alibaba.dubbo.config;
    
    import java.util.Map;
    
    import com.alibaba.dubbo.common.extension.ExtensionLoader;
    import com.alibaba.dubbo.common.serialize.Serialization;
    import com.alibaba.dubbo.common.status.StatusChecker;
    import com.alibaba.dubbo.common.threadpool.ThreadPool;
    import com.alibaba.dubbo.config.support.Parameter;
    import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
    import com.alibaba.dubbo.remoting.Dispatcher;
    import com.alibaba.dubbo.remoting.Codec;
    import com.alibaba.dubbo.remoting.Transporter;
    import com.alibaba.dubbo.remoting.exchange.Exchanger;
    import com.alibaba.dubbo.remoting.telnet.TelnetHandler;
    import com.alibaba.dubbo.rpc.Protocol;
    
    /**
     * ProtocolConfig
     * 
     * @author william.liangf
     * @export
     */
    public class ProtocolConfig extends AbstractConfig {
    
        private static final long   serialVersionUID = 6913423882496634749L;
    
        // 服务协议
        private String              name;
    
        // 服务IP地址(多网卡时使用)
        private String              host;
    
        // 服务端口
        private Integer             port;
    
        // 上下文路径
        private String              contextpath;
        
        // 线程池类型
        private String              threadpool;
        
        // 线程池大小(固定大小)
        private Integer             threads;
        
        // IO线程池大小(固定大小)
        private Integer             iothreads;
        
        // 线程池队列大小
        private Integer             queues;
        
        // 最大接收连接数
        private Integer             accepts;
        
        // 协议编码
        private String              codec;
        
        // 序列化方式
        private String              serialization;
        
        // 字符集
        private String              charset;
        
        // 最大请求数据长度
        private Integer             payload;
        
        // 缓存区大小
        private Integer             buffer;
        
        // 心跳间隔
        private Integer             heartbeat;
    
        // 访问日志
        private String              accesslog;
        
        // 网络传输方式
        private String              transporter;
        
        // 信息交换方式
        private String              exchanger;
        
        // 信息线程模型派发方式
        private String              dispatcher;
    
        // 对称网络组网方式
        private String              networker;
        
        // 服务器端实现
        private String              server;
        
        // 客户端实现
        private String              client;
        
        // 支持的telnet命令,多个命令用逗号分隔
        private String              telnet;
        
        // 命令行提示符
        private String              prompt;
    
        // status检查
        private String              status;
        
        // 是否注册
        private Boolean             register;
    
        // 是否长连接
        // TODO add this to provider config
        private Boolean keepAlive;
    
        // 序列化的优化器的实现类名
        // TODO add this to provider config
        private String optimizer;
    
        private String extension;
        
        // 参数
        private Map<String, String> parameters;
    
        // 是否为缺省
        private Boolean isDefault;
        
        public ProtocolConfig() {
        }
        
        public ProtocolConfig(String name) {
            setName(name);
        }
    
        public ProtocolConfig(String name, int port) {
            setName(name);
            setPort(port);
        }
        
        @Parameter(excluded = true)
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            checkName("name", name);
            this.name = name;
            if (id == null || id.length() == 0) {
                id = name;
            }
        }
    
        @Parameter(excluded = true)
        public String getHost() {
            return host;
        }
    
        public void setHost(String host) {
            checkName("host", host);
            this.host = host;
        }
    
        @Parameter(excluded = true)
        public Integer getPort() {
            return port;
        }
    
        public void setPort(Integer port) {
            this.port = port;
        }
    
        @Deprecated
        @Parameter(excluded = true)
        public String getPath() {
            return getContextpath();
        }
    
        @Deprecated
        public void setPath(String path) {
            setContextpath(path);
        }
    
        @Parameter(excluded = true)
        public String getContextpath() {
            return contextpath;
        }
    
        public void setContextpath(String contextpath) {
            checkPathName("contextpath", contextpath);
            this.contextpath = contextpath;
        }
    
        public String getThreadpool() {
            return threadpool;
        }
    
        public void setThreadpool(String threadpool) {
            checkExtension(ThreadPool.class, "threadpool", threadpool);
            this.threadpool = threadpool;
        }
    
        public Integer getThreads() {
            return threads;
        }
    
        public void setThreads(Integer threads) {
            this.threads = threads;
        }
    
        public Integer getIothreads() {
            return iothreads;
        }
    
        public void setIothreads(Integer iothreads) {
            this.iothreads = iothreads;
        }
    
        public Integer getQueues() {
            return queues;
        }
        
        public void setQueues(Integer queues) {
            this.queues = queues;
        }
        
        public Integer getAccepts() {
            return accepts;
        }
        
        public void setAccepts(Integer accepts) {
            this.accepts = accepts;
        }
    
        public String getCodec() {
            return codec;
        }
    
        public void setCodec(String codec) {
            if ("dubbo".equals(name)) {
                checkMultiExtension(Codec.class, "codec", codec);
            }
            this.codec = codec;
        }
    
        public String getSerialization() {
            return serialization;
        }
        
        public void setSerialization(String serialization) {
            if ("dubbo".equals(name)) {
                checkMultiExtension(Serialization.class, "serialization", serialization);
            }
            this.serialization = serialization;
        }
    
        public String getCharset() {
            return charset;
        }
    
        public void setCharset(String charset) {
            this.charset = charset;
        }
    
        public Integer getPayload() {
            return payload;
        }
    
        public void setPayload(Integer payload) {
            this.payload = payload;
        }
    
        public Integer getBuffer() {
            return buffer;
        }
    
        public void setBuffer(Integer buffer) {
            this.buffer = buffer;
        }
    
        public Integer getHeartbeat() {
            return heartbeat;
        }
    
        public void setHeartbeat(Integer heartbeat) {
            this.heartbeat = heartbeat;
        }
    
        public String getServer() {
            return server;
        }
    
        public void setServer(String server) {
            if ("dubbo".equals(name)) {
                checkMultiExtension(Transporter.class, "server", server);
            }
            this.server = server;
        }
    
        public String getClient() {
            return client;
        }
    
        public void setClient(String client) {
            if ("dubbo".equals(name)) {
                checkMultiExtension(Transporter.class, "client", client);
            }
            this.client = client;
        }
        
        public String getAccesslog() {
            return accesslog;
        }
        
        public void setAccesslog(String accesslog) {
            this.accesslog = accesslog;
        }
    
        public String getTelnet() {
            return telnet;
        }
        
        public void setTelnet(String telnet) {
            checkMultiExtension(TelnetHandler.class, "telnet", telnet);
            this.telnet = telnet;
        }
    
        @Parameter(escaped = true)
        public String getPrompt() {
            return prompt;
        }
    
        public void setPrompt(String prompt) {
            this.prompt = prompt;
        }
    
        public String getStatus() {
            return status;
        }
        
        public void setStatus(String status) {
            checkMultiExtension(StatusChecker.class, "status", status);
            this.status = status;
        }
    
        public Boolean isRegister() {
            return register;
        }
        
        public void setRegister(Boolean register) {
            this.register = register;
        }
        
        public String getTransporter() {
            return transporter;
        }
        
        public void setTransporter(String transporter) {
            checkExtension(Transporter.class, "transporter", transporter);
            this.transporter = transporter;
        }
        
        public String getExchanger() {
            return exchanger;
        }
        
        public void setExchanger(String exchanger) {
            checkExtension(Exchanger.class, "exchanger", exchanger);
            this.exchanger = exchanger;
        }
    
        /**
         * 单词拼写错误,请使用{@link #getDispatcher()}
         * @deprecated {@link #getDispatcher()}
         */
        @Deprecated
        @Parameter(excluded = true)
        public String getDispather() {
            return getDispatcher();
        }
    
        /**
         * 单词拼写错误,请使用{@link #setDispatcher(String)
         * @deprecated {@link #setDispatcher(String)}
         */
        @Deprecated
        public void setDispather(String dispather) {
            setDispatcher(dispather);
        }
    
        public String getDispatcher() {
            return dispatcher;
        }
    
        public void setDispatcher(String dispatcher) {
            checkExtension(Dispatcher.class, "dispacther", dispatcher);
            this.dispatcher = dispatcher;
        }
    
        public String getNetworker() {
            return networker;
        }
    
        public void setNetworker(String networker) {
            this.networker = networker;
        }
    
        public Map<String, String> getParameters() {
            return parameters;
        }
    
        public void setParameters(Map<String, String> parameters) {
            this.parameters = parameters;
        }
    
        public Boolean isDefault() {
            return isDefault;
        }
    
        public void setDefault(Boolean isDefault) {
            this.isDefault = isDefault;
        }
    
        public Boolean getKeepAlive() {
            return keepAlive;
        }
    
        public void setKeepAlive(Boolean keepAlive) {
            this.keepAlive = keepAlive;
        }
    
        public String getOptimizer() {
            return optimizer;
        }
    
        public void setOptimizer(String optimizer) {
            this.optimizer = optimizer;
        }
    
        public String getExtension() {
            return extension;
        }
    
        public void setExtension(String extension) {
            this.extension = extension;
        }
    
        public void destory() {
            if (name != null) {
                ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(name).destroy();;
            }
        }
    
        public static void destroyAll() {
            AbstractRegistryFactory.destroyAll();
            ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class);
            for (String protocolName : loader.getLoadedExtensions()) {
                try {
                    Protocol protocol = loader.getLoadedExtension(protocolName);
                    if (protocol != null) {
                        protocol.destroy();
                    }
                } catch (Throwable t) {
                    logger.warn(t.getMessage(), t);
                }
            }
        }
    
    }
    View Code
  • 相关阅读:
    C# 截取窗口图像(包括遮挡窗口,最小化窗口)
    C# 自定义DevExpress中XtraMessageBox的窗口Icon
    C# DevExpress的皮肤,没有在多线程中应用
    DevExpress的RibbonForm在WIN7下标题栏透明,没应用程序设置的Skin
    C# RibbonForm的标题Text显示不完全的解决方法
    C# 使用递归获取文件路径,不获取拒绝访问的文件夹
    socket使用
    KMP模板
    HDU1358(KMP)
    windows环境变量
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/7803545.html
Copyright © 2011-2022 走看看