solr/home 配置解析

本文介绍了如何配置Solr的solr/home参数,包括通过web.xml、JNDI、环境变量和基于当前路径的方式。详细讲解了每种方法的实现步骤,帮助读者理解Solr启动时如何加载配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,安装solr的时候需要配置一个solr/home参数,其实就是指定solr的根目录,solr在启动的时候会去这个根目录下加载配置信息。

配置solr/home参数有如下几种方式:

    基于web.xml不推荐

    <env-entry>

       <env-entry-name>solr/home</env-entry-name>

       <env-entry-value>${the_path_to solr_home}</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>


   基于JNDI 配置


<Context docBase="${the_path_to solr.war}" debug="0" crossContext="true" >

   <Environment name="solr/home" type="java.lang.String" value="${the_path_to solr_home}" override="true" />

</Context>


   基于环境变量

   

    在${ tomcat_home}/bin/catalina.sh中添加如下环境变量: 

    export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=${the_path_to solr_home}"


    基于当前路径

 

    启动tomcat时需要cd(切换)到${the_path_to solr_home},然后执行sh ${tomcat_home}/bin/startup.sh


    solr加载solr/home源码

  (变量project定义===>static final String project = "solr";)

public static String locateSolrHome() {
    String home = null;
    // Try JNDI
    try {
      Context c = new InitialContext();
      home = (String)c.lookup("java:comp/env/"+project+"/home");
      log.info("Using JNDI solr.home: "+home );
    } catch (NoInitialContextException e) {
      log.info("JNDI not configured for "+project+" (NoInitialContextEx)");
    } catch (NamingException e) {
      log.info("No /"+project+"/home in JNDI");
    } catch( RuntimeException ex ) {
      log.warn("Odd RuntimeException while testing for JNDI: " + ex.getMessage());
    } 
    // Now try system property
    if( home == null ) {
      String prop = project + ".solr.home";
      home = System.getProperty(prop);
      if( home != null ) {
        log.info("using system property "+prop+": " + home );
      }
    }
    // if all else fails, try 
    if( home == null ) {
      home = project + '/';
      log.info(project + " home defaulted to '" + home + "' (could not find system property or JNDI)");
    }
    return normalizeDir( home );
  }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值