Solr1.3的启动过程分析一
2013-02-23 19:04
162 查看
转自: :宋永维 http://damoqingquan.iteye.com/
1. Solr1.3中使用初始化工具Initializer的实例来获得CoreContainer的对象。常规的步骤如下:
-------------------------------------------
Initializer initializer=new Initializer();
//获得配置文件名,如果不调用该方法,将使用默认的solr.xml
init.setSolrConfigFilename(config.getInitParameter("solrconfig-filename"));
//设置如果启动出错是否停止
setAbortOnConfigurationError(boolean abortOnConfigurationError);
CoreContainer cores=init.initialize();
2.调用init.initialize()时都做了些什么事情?
//使用下面语句获得主目录,例如:D:\search_engine\multicore/
String instanceDir = SolrResourceLoader.locateInstanceDir();
//获取主目录路径下的配置文件solr.xml,当为非多核的时候它是不存在的,所以下面就针对该文件是否存在出现了if-else分支。
File fconf = new File(instanceDir, solrConfigFilename == null? "solr.xml": solrConfigFilename);
2.1如果存在配置文件,通过下面的语句获得多核实例,也就是这两句代码这里,所有的核都已经创建了
cores = new CoreContainer();
cores.load(instanceDir, fconf);
//接来的部分就是设置abortOnConfigurationError和solrConfigFilename连个属性而已。
2.2如果不存在配置文件,采用下面的方法创建一个SolrCoreContainer实例。
//这里仅仅是设置CoreContainer的load(SolrResourceLoader)属性,显然它是与主目录相关的了。
cores = new CoreContainer(new SolrResourceLoader(instanceDir));
//获取配置文件名,solrConfigFilename 为空则使用默认的文件名solrconfig.xml。
SolrConfig cfg = solrConfigFilename == null ? new SolrConfig() : new SolrConfig(solrConfigFilename);
//获得CoreDescriptor实例,三个参数依次为核容器,名字,主目录
CoreDescriptor dcore = new CoreDescriptor(cores, "", ".");
//创建一个SolrCore 对象,五个参数一次为 name, Dir, SolrConfig实例(代表配置文件),IndexSchema实例schema(代表域模式), CoreDescriptor(核描述器).
SolrCore singlecore = new SolrCore(null, null, cfg, null, dcore);
//上面很多地方使用了null,我们很容易想到内部使用了默认值
//下面一句很显然是将singlecore这里核添加到cores中去
cores.register("", singlecore, false);
//这里是设置persistent属性
cores.setPersistent(false);
//对于solrConfigFilename以及abortOnConfigurationError的设置就不用说了
//最后就是返回CoreContainer的实例了
cores.load(instanceDir, fconf);到底做了哪些事情呢?
1. Solr1.3中使用初始化工具Initializer的实例来获得CoreContainer的对象。常规的步骤如下:
-------------------------------------------
Initializer initializer=new Initializer();
//获得配置文件名,如果不调用该方法,将使用默认的solr.xml
init.setSolrConfigFilename(config.getInitParameter("solrconfig-filename"));
//设置如果启动出错是否停止
setAbortOnConfigurationError(boolean abortOnConfigurationError);
CoreContainer cores=init.initialize();
2.调用init.initialize()时都做了些什么事情?
//使用下面语句获得主目录,例如:D:\search_engine\multicore/
String instanceDir = SolrResourceLoader.locateInstanceDir();
//获取主目录路径下的配置文件solr.xml,当为非多核的时候它是不存在的,所以下面就针对该文件是否存在出现了if-else分支。
File fconf = new File(instanceDir, solrConfigFilename == null? "solr.xml": solrConfigFilename);
2.1如果存在配置文件,通过下面的语句获得多核实例,也就是这两句代码这里,所有的核都已经创建了
cores = new CoreContainer();
cores.load(instanceDir, fconf);
//接来的部分就是设置abortOnConfigurationError和solrConfigFilename连个属性而已。
2.2如果不存在配置文件,采用下面的方法创建一个SolrCoreContainer实例。
//这里仅仅是设置CoreContainer的load(SolrResourceLoader)属性,显然它是与主目录相关的了。
cores = new CoreContainer(new SolrResourceLoader(instanceDir));
//获取配置文件名,solrConfigFilename 为空则使用默认的文件名solrconfig.xml。
SolrConfig cfg = solrConfigFilename == null ? new SolrConfig() : new SolrConfig(solrConfigFilename);
//获得CoreDescriptor实例,三个参数依次为核容器,名字,主目录
CoreDescriptor dcore = new CoreDescriptor(cores, "", ".");
//创建一个SolrCore 对象,五个参数一次为 name, Dir, SolrConfig实例(代表配置文件),IndexSchema实例schema(代表域模式), CoreDescriptor(核描述器).
SolrCore singlecore = new SolrCore(null, null, cfg, null, dcore);
//上面很多地方使用了null,我们很容易想到内部使用了默认值
//下面一句很显然是将singlecore这里核添加到cores中去
cores.register("", singlecore, false);
//这里是设置persistent属性
cores.setPersistent(false);
//对于solrConfigFilename以及abortOnConfigurationError的设置就不用说了
//最后就是返回CoreContainer的实例了
cores.load(instanceDir, fconf);到底做了哪些事情呢?
相关文章推荐
- Solr1.3的启动过程分析三
- Solr1.3的启动过程分析二
- solrcloud集群启动管理过程基于源码的分析
- solr 启动过程 分析
- DM642启动过程分析
- Android4.0(Phone)拨号启动过程分析(二)
- Openstack liberty源码分析 之 云主机的启动过程1
- 嵌入式Linux使用Busybox init进程启动过程分析
- Linux内核启动分析过程-《Linux内核分析》week3作业
- workerman源码分析之启动过程
- 4412 uboot启动过程分析之一
- Chromium的Render进程启动过程分析
- 3、分析Linux内核的启动过程
- 随笔之GoldFish Kernel启动过程中arm汇编分析
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- android启动过程分析--启动systemServer
- OMPL138及U-Boot的启动过程分析(二)
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
- Android系统默认Home应用程序(Launcher)的启动过程源码分析
- struts2启动过程分析