DSpace:Solr网络应用程序显示“;未知主机异常”;



我正试图在本地虚拟机上设置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,所以我尝试从http://localhost:8080/solr/search到http://127.0.0.1:8008/solr/search,但这并没有解决问题。

任何关于下一步检查内容的提示都将非常有用。这可能是虚拟机上可用内存不足的问题吗?

这可能是/etc/hosts的问题。如果/etc/hosts不包含主机名的定义,则会失败。尝试将linux-ai1添加到主机文件中,例如

127.0.0.1 localhost linux-ai1n
  • 我要做的第一件事是检查SOLR是否真的部署好了。您在tomcat中有用于solr部署的上下文文件吗?在[comcat folder]/conf/Catalina/localhost下进行检查。您应该有一个.xml文件用于xmlui/jsp部署,还有一个用于solr部署。

  • 如果solr部署正确,请检查您是否可以通过浏览器访问它。localhost:port/solr/。

在默认配置中与DSpace一起安装的Solr web应用程序使用过滤器org.DSpace.Solr.filters.LocalHostRestrictionFilter来拒绝非本地主机发出的请求,以确保安全。过滤器在Solr的web.xml中定义,该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+"
/>

这将允许来自本地主机和本地子网的访问。请参阅访问控制一节https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html了解更多信息。

最新更新