zoukankan      html  css  js  c++  java
  • HttpSolrServer-采用静态工厂方法,创建HttpSolrServer单实例

      HttpSolrServer线程安全,如果使用下面构造器,必须对所有的请求重用相同的实例.如果实例在运行中创建的,
    它可能会导致连接泄漏.推荐的做法就是保持每个solr服务url的HttpSolrServer的静态实例,所有的请求都共享这个实例.
    参考https://issues.apache.org/jira/browse/SOLR-861查看更多细节.
    1.创建配置文件solr-config.properties:

    cores=ac,jd
    
    base_url=http://127.0.0.a:13131/solr
    
    

     2.创建配置对象ConfigUtil.java 读取properties文件中的配置:

    package com.li.util;
    
    import java.util.ResourceBundle;
    
    
    public class ConfigUtil {
        private static ResourceBundle  resouceBundle = ResourceBundle.getBundle(Config.SEARCH);
        public static String getString(String key){
            return resouceBundle.getString(key);
        }
    }

    3.配置属性对象类Config.java:

    package com.li.util;
    
    public class Config {
        
        //common
        public static final String COMMA = ",";
        public static final String UNDERLINE = "_";
        public static final String SINGE_BLANK =" ";
        public static final String SLASH ="/";
        public static final String COLON =":";
            
        
        public static final String BASE_URL = "base_url";
        public static final String CORES = "cores";
        
        
        //配置文件
        public static final String SEARCH = "solr-config";
        
    }

    4.静态工厂方法SolrServerFactory.java:

    package com.li.solrj;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    
    import com.li.util.Config;
    import com.li.util.ConfigUtil;
    
    /**
     * 创建一个HttpSolrServer的静态工厂方法,
     * 用于创建多个集合的单例模式
     * @author Administrator
     *
     */
    public class SolrServerFactory {
        
        public static Map<String,HttpSolrServer> servers ;
        
        static {
            servers = new HashMap<String,HttpSolrServer>();
            //静态加载所有的solrServer
            String[] cores = ConfigUtil.getString(Config.CORES).split(Config.COMMA);
            String base_url = ConfigUtil.getString(Config.BASE_URL);
            for(String core : cores){
                String url ;
                if(base_url.endsWith(Config.SLASH)){
                    url = base_url + core;
                }else{
                    url = base_url+Config.SLASH+core;
                }
                HttpSolrServer server = new HttpSolrServer(url);
                servers.put(core, server);
            }
        }
        public HttpSolrServer newInstance(String collection){
            if(servers.containsKey(collection))
                return servers.get(collection);
            String base_url = ConfigUtil.getString(Config.BASE_URL);
            if(base_url.endsWith(Config.SLASH))
                base_url = base_url+collection;
            else
                base_url = base_url + Config.SLASH + collection;
            return servers.put(collection, new HttpSolrServer(base_url));
        }
    }
  • 相关阅读:
    How to alter department in PMS system
    Can't create new folder in windows7
    calculate fraction by oracle
    Long Wei information technology development Limited by Share Ltd interview summary.
    ORACLE BACKUP AND RECOVERY
    DESCRIBE:When you mouse click right-side is open an application and click left-side is attribution.
    ORACLE_TO_CHAR Function
    电脑BOIS设置
    JSP点击表头排序
    jsp+js实现可排序表格
  • 原文地址:https://www.cnblogs.com/a198720/p/4281888.html
Copyright © 2011-2022 走看看