【问题标题】:Solr doesn't start in jetty while installing CKANSolr 在安装 CKAN 时没有在码头启动
【发布时间】:2018-05-02 10:28:44
【问题描述】:

被要求安装 CKAN,我关注 the documented procedure 。 该过程提到了 Ubuntu 作为操作系统,但由于我使用的是 Debian 9,所以我还是选择了继续。

我设法在 jetty(9.2.21) 上安装和配置了 solr(3.6.2) 之前的几乎所有东西(包是“solr-jetty”,jetty 可以开始自动绑定到自己的套接字,因为测试可以看到根应用程序的页面),但是当我启动码头时,会抛出一个 NPE 并跟踪到日志中。

安装会创建一个文件 /etc/jetty9/contexts/solr.xml,其内容如下:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/solr</Set>
  <Set name="war">/usr/share/solr/web</Set>

  <!-- Set the solr.solr.home system property -->
  <Call name="setProperty" class="java.lang.System">
    <Arg type="String">solr.solr.home</Arg>
    <Arg type="String">/usr/share/solr</Arg>
  </Call>

  <!-- Enable symlinks -->
  <Call name="addAliasCheck">
    <Arg>
      <New class="org.eclipse.jetty.server.handler.ContextHandler$ApproveSameSuffixAliases"/>
    </Arg>
  </Call>
</Configure>

我从文件 /etc/jetty9/jetty.conf 中引用它

jetty-logging.xml
contexts/solr.xml
jetty-started.xml

solr webapp 的配置文件似乎已正确获取。此外,solr.solr.home 属性似乎映射到正确的目录。 但是在启动jetty的时候,/var/log/jetty9/里面写了如下内容:

2018-05-02 11:51:00.827:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@5afa04c{/,file:/var/lib/jetty9/webapps/root/,AVAILABLE}{/root}
2018-05-02 11:51:00.853:INFO:oejs.ServerConnector:main: Started ServerConnector@41b12eec{HTTP/1.1}{127.0.0.1:8983}
2018-05-02 11:51:00.853:INFO:oejs.Server:main: Started @831ms
2018-05-02 11:51:00.853:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@40ef3420{/solr,null,null}{/usr/share/solr/web}
java.lang.NullPointerException
        at org.eclipse.jetty.webapp.Configuration$ClassList.serverDefault(Configuration.java:131)
        at org.eclipse.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:932)
        at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:435)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:504)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1255)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1174)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.eclipse.jetty.start.Main.invokeMain(Main.java:321)
        at org.eclipse.jetty.start.Main.start(Main.java:817)
        at org.eclipse.jetty.start.Main.main(Main.java:112)

我只是不知道是什么导致了 NPE。

【问题讨论】:

    标签: solr jetty ckan


    【解决方案1】:

    contexts/solr.xml 不应出现在您的 jetty.conf

    该 XML 文件应从扫描配置的目录位置 Jetty 的 WebAppProvider 中提取,这是 Jetty 中 DeploymentManager 概念的一部分。

    他们现在配置它的方式,你有一个带有根上下文的服务器(从/var/lib/jetty9/webapps/root/ 部署)和一个单独的对象,它创建一个未连接到HandlerCollection 的未连接的WebAppContext,或Context,甚至Server

    找到WebAppProvider 引用的monitoredDirName 目录,并确保您的solr.xml 存在于该目录中。

    提示:找到您正在使用的实际码头配置的start.ini(文件)或start.d/*.ini(目录+文件)。 monitoredDirName 很可能在您系统上的这些文件之一中声明。

    最后,Jetty 9.2.x is EOL (End of Life),考虑升级。

    【讨论】:

    • 谢谢乔金。我所要做的就是链接受监控目录中的 solr-jetty.xml 文件,它就被正确部署了。
    • 简单来说,上述安装 CKAN 的过程是关于安装一堆软件包。之后才说要安装唯一的软件包“solr-jetty”。它的安装最终失败,因为 solr-jetty 依赖于“jetty9”,它的安装失败,因为 Jetty 试图绑定已经绑定的端口 8080。我通过首先安装 jetty9、更正其配置(绑定到端口 8983)然后安装 solr-jetty 来重复安装。这样 solr 的部署就可以按预期工作。
    • 我从不从 linux 包中安装 jetty,因为它总是被 linux 包维护者严重破坏,超出了它的预期用例。我总是从 tarball 安装 Jetty。
    • 你是对的。事实上,“solr-jetty”包缺少一些基本脚本,例如用于在 solr 中创建新内核的脚本。此时,我将卸载两者并从独立 Solr 安装的存档开始。
    猜你喜欢
    • 2014-12-10
    • 2016-12-12
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多