我之前见过这个问题,没有好的答案,你如何配置jetty以允许从外部服务器访问?我刚刚开始使用solr和jetty,并使用了solr附带的示例jetty实例。
solr在localhost上正常运行,我可以从同一台服务器上的站点查询它。但是,我无法从另一台服务器访问solr实例。我在过去的几天里用谷歌搜索并阅读了相当多的内容,但是还没有发现什么样的游戏允许非本地主机访问solr。
根据我读过的内容,我尝试将以下行添加到示例/ etc / jetty.xml
<Set name="Host">0.0.0.0</Set>
并且仍然没有得到外部回复
然后尝试了
<Set name="Host">x.x.x.x</Set>
其中x.x.x.x是我服务器的IP地址 和
<Set name="Host">host.domain.com</Set>
其中host.domain.com是我服务器的FQDN
这两个都导致了错误
java.net.BindException: Cannot assign requested address
当我开始。
我正在使用的启动命令是
sudo java -jar start.jar etc/jetty.xml
你可以指出我可以在这里阅读或勺子喂我,我不在乎。我只是想克服这个障碍,所以我可以继续学习如何设置和使用solr。
答案 0 :(得分:0)
您应该添加一个名为clientaccesspolicy.xml的文件,以便跨域访问您的静态Web文件目录:
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-methods="*" http-request-headers="*">
<domain uri="http://*"/>
<domain uri="https://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
您应该使用以下代码将静态目录设置为jetty:
ResourceHandler staticHandler = new ResourceHandler();
staticHandler.setResourceBase("static/dir");
handlers.addHandler(staticHandler);