DSpace:Solr webapp显示“UnknownHostException”

时间:2016-04-07 11:37:43

标签: solr dspace

我正在尝试在本地VM上设置DSpace 5.4,以准备在另一台计算机上升级到DSpace 5.5。

设置过程正常,但我无法使solr webapp工作。我部署了它(在OpenSuse Leaf 42.1上使用Tomocat 8.0.33和OpenJDK 1.8.0_60),当从VM和主机调用时它返回以下错误:

java.net.UnknownHostException: linux-ai1n: unknown error
    java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    java.net.InetAddress.getLocalHost(InetAddress.java:1500)
    org.dspace.solr.filters.LocalHostRestrictionFilter.doFilter(LocalHostRestrictionFilter.java:38)

因此,在使用发现相关功能时,会返回此错误:

Expected mime type application/octet-stream but got text/html.

答案我发现只建议更改solr URL,所以我尝试将config / modules / discovery.cfg中的solr URL从http://localhost:8080/solr/search更改为http://127.0.0.1:8008/solr/search,但这并没有解决问题。

任何暗示接下来要检查的内容都会非常有帮助。这可能是虚拟机上没有足够内存的问题吗?

2 个答案:

答案 0 :(得分:0)

  • 我要做的第一件事是检查是否实际部署了SOLR。在tomcat中是否有用于solr部署的上下文文件?在[tomcat-folder] / conf / Catalina / localhost下查看。您应该为xmlui / jsp部署提供.xml文件,为solr部署提供一个.xml文件。

  • 如果正确部署了solr,请检查您是否可以通过浏览器自行访问它。本地主机:端口/ solr的/.

答案 1 :(得分:0)

与DSpace一起安装的Solr Web应用程序在其默认配置中使用过滤器 org.dspace.solr.filters.LocalHostRestrictionFilter 来拒绝不是来自localhost的安全性请求。过滤器在Solr的web.xml中定义,该文件位于[dspace]/webapps/solr/WEB-INF/web.xml

您可以通过从web.xml中删除以下行来完全删除此过滤器:

<!-- Any path (name) registered in solrconfig.xml will be sent to that filter -->
<filter>
  <filter-name>LocalHostRestrictionFilter</filter-name>
  <filter-class>org.dspace.solr.filters.LocalHostRestrictionFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>LocalHostRestrictionFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

或者,将以下内容添加到web.xml以配置过滤器以允许所有请求,包括那些不是来自localhost的请求。

<!-- Limit access to solr webapp.
  'true': allow requests from localhost only.
  'false': allow requests from all remotes. -->
<context-param>
  <param-name>LocalHostRestrictionFilter.localhost</param-name>
  <param-value>false</param-value>
</context-param>

如果您执行这两项中的任何一项,我强烈建议您通过其他方式限制对Solr的访问。就个人而言,我已将以下内容添加到${catalina.base}/conf/Catalina/localhost/solr.xml的solr上下文文件中:

<Valve
  className="org.apache.catalina.valves.RemoteAddrValve"
  allow="127\.0\.0\.1|::1|0:0:0:0:0:0:0:1|192\.168\.1\.\d+"
/>

允许从localhost和本地子网进行访问。有关详细信息,请参阅https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html上标题为访问控制的部分。