OSX睡眠后无法从Java客户端访问Solr服务器

OSX睡眠后无法从Java客户端访问Solr服务器,java,macos,spring-boot,solr,network-programming,Java,Macos,Spring Boot,Solr,Network Programming,我的Mac笔记本电脑上有一个本地开发堆栈,可以很好地与生产站点相匹配。所有内容都在本地主机上的不同端口上运行: Solr 6.5.1 博士后 弹簧靴 在我关上笔记本电脑之前,一切正常。打开笔记本电脑后,依赖Solr Java客户端的web应用程序无法再访问Solr服务器: org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request ... Caus

我的Mac笔记本电脑上有一个本地开发堆栈,可以很好地与生产站点相匹配。所有内容都在本地主机上的不同端口上运行:

  • Solr 6.5.1
  • 博士后
  • 弹簧靴
在我关上笔记本电脑之前,一切正常。打开笔记本电脑后,依赖Solr Java客户端的web应用程序无法再访问Solr服务器:

org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request
...
Caused by: java.net.UnknownHostException: fe80: nodename nor servname provided, or not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[?:1.8.0_162]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[?:1.8.0_162]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[?:1.8.0_162]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276) ~[?:1.8.0_162]
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[?:1.8.0_162]
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[?:1.8.0_162]
    at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) ~[httpclient-4.5.6.jar:4.5.6]
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:263) ~[httpclient-4.5.6.jar:4.5.6]
但我仍然可以通过curl或web界面在localhost上手动查询Solr服务器,即使完全相同的查询也可以。不管发生什么事,与博士后的联系总是很好的。只是Java客户端到solr的连接失败了

此问题状态通过以下方式持续存在:

  • 停止和启动弹簧靴
  • 停止和启动Solr
  • 重新启动IDE
  • 通过命令行启动网站
  • 通过IDE启动网站
  • 通过ifconfig循环所有网络接口。。。向下/向上
  • 上述各项的任意组合
恢复连接的唯一方法是重新启动我的机器。多年来,这个问题一直存在于多台笔记本电脑和OS X版本中,但目前我使用的是10.13.6 high sierra

我的问题是:

  • 是否有解决方案来防止此问题发生
  • 是否至少有一种更快的方法可以在不重新启动机器的情况下恢复连接

  • 这篇博文解决了我的问题

    本质上,Java在某些情况下很难解析本地主机名,这似乎是一个“主机”问题(不能让这个双关语过去!),这些问题都可以通过以下简单的解决方法解决:

  • 在终端中键入
    hostname
    命令以确定主机名。假设答案是您的主机名

  • 在您的
    /etc/hosts
    中添加或修改这些条目:

  • 127.0.0.1 localhost-YOUR-HOSTNAME
    
    ::1 localhost YOUR-HOSTNAME

    这篇博文解决了我的问题

    本质上,Java在某些情况下很难解析本地主机名,这似乎是一个“主机”问题(不能让这个双关语过去!),这些问题都可以通过以下简单的解决方法解决:

  • 在终端中键入
    hostname
    命令以确定主机名。假设答案是您的主机名

  • 在您的
    /etc/hosts
    中添加或修改这些条目:

  • 127.0.0.1 localhost-YOUR-HOSTNAME
    ::1 localhost-YOUR-HOSTNAME