从命令行覆盖solr上的contextPath

时间:2016-01-13 16:59:03

标签: solr jetty solr5

使用命令行参数启动Solr 5时是否可以覆盖jetty“contextPath”属性? 我想要像

这样的东西
bin/solr -p 8983 -s "example/techproducts/solr" -a "-DcontextPath=/s"

以便基本网址为http://localhost:8983/s

确切地说,我想要完全覆盖contextPath属性

1 个答案:

答案 0 :(得分:1)

您的问题是关于solr作为jetty webapp的上下文路径。

而不是

http://localhost:8983/solr/ 

您想通过

访问solr
http://localhost:8983/s/

imho如果不更改配置文件,这是不可能的。

请注意,对于zookeeper和solrCloud,hostContext中有参数solr.xml,您可以使用solr.xml中的系统属性,如hostContext

没有zookeeper但有改变

server\contexts\solr-jetty-context.xml

你会得到你想要的东西:

改变
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><Property name="hostContext" default="/solr"/></Set>
  <Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
  <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
  <Set name="extractWAR">false</Set>
</Configure>

到此:

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><SystemProperty name="hostContext" default="/solr"/></Set>
  <Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
  <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
  <Set name="extractWAR">false</Set>
</Configure>

现在你可以从

开始
solr start -a "-DhostContext=/s"