繁体   English   中英

DSpace:Solr Web应用程序显示“ UnknownHostException”

[英]DSpace: Solr webapp shows “UnknownHostException”

我正在尝试在本地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 ,但是并不能解决问题。

任何提示下一步要检查的提示都会很有帮助。 如果虚拟机上没有足够的可用内存,这可能是一个问题吗?

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

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

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

与DSpace一起在其默认配置中安装的Solr Web应用程序使用过滤器org.dspace.solr.filters.LocalHostRestrictionFilter拒绝非本地主机发出的安全请求。 该过滤器在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中以将过滤器配置为允许所有请求,包括不是源自本地主机的请求。

<!-- 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中标题为“ 访问控制”的部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM