httpsolrserver-using a static factory method to create a Httpsolrserver single instance

Source: Internet
Author: User
Tags solr

Httpsolrserver thread Safety, if you use the following constructor, you must reuse the same instance for all requests. If the instance is created in the run,
It may cause a connection leak. The recommended practice is to maintain a static instance of Httpsolrserver for each SOLR service URL, and all requests share this instance.
Refer to https://issues.apache.org/jira/browse/SOLR-861 for more details.
1. Create a configuration file solr-config.properties:

cores=ac,jdbase_url=http://127.0.0.A:13131/SOLR

2. Create a Configuration object Configutil.java read the configuration in the properties file:

 Package Com.li.util; Import Java.util.ResourceBundle;  Public class configutil {    privatestatic resourcebundle  Resoucebundle =  Resourcebundle.getbundle (Config.search);      Public Static string getString (String key) {        return  resoucebundle.getstring (key);}    }

3. Configure the Property object class Config.java:

 PackageCom.li.util; Public classConfig {//Common     Public Static FinalString COMMA = ",";  Public Static FinalString underline = "_";  Public Static FinalString Singe_blank = "";  Public Static FinalString SLASH = "/";  Public Static FinalString COLON = ":";  Public Static FinalString base_url = "Base_url";  Public Static FinalString cores = "Cores"; //configuration file     Public Static FinalString SEARCH = "Solr-config"; }

4. Static Factory method Solrserverfactory.java:

 PackageCOM.LI.SOLRJ;ImportJava.util.HashMap;ImportJava.util.Map;ImportOrg.apache.solr.client.solrj.impl.HttpSolrServer;ImportCom.li.util.Config;ImportCom.li.util.ConfigUtil;/*** Create a Httpsolrserver static Factory method, * A singleton pattern for creating multiple collections *@authorAdministrator **/ Public classSolrserverfactory { Public StaticMap<string,httpsolrserver>servers; Static{Servers=NewHashmap<string,httpsolrserver>(); //static loading of all Solrserverstring[] 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=Newhttpsolrserver (URL);        Servers.put (core, server); }    }     Publichttpsolrserver newinstance (String collection) {if(Servers.containskey (collection))returnServers.get (collection); String Base_url=configutil.getstring (Config.base_url); if(Base_url.endswith (Config.slash)) Base_url= base_url+collection; ElseBase_url= Base_url + Config.slash +collection; returnServers.put (Collection,NewHttpsolrserver (Base_url)); }}

httpsolrserver-using a static factory method to create a Httpsolrserver single instance

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.