14

我正在尝试使用 192.168.0.6:8080(A 的 IP)从 LAN 上的另一台机器(B)访问 Web 应用程序(部署在我的机器(A)上的 jetty8 中),但它不工作。虽然我通常可以使用 192.168.0.5(B 的 IP)从 A 访问机器 B 上 AppServ 上托管​​的应用程序。

我可以在机器 A 上的 localhost:8080 上正常访问该应用程序。

我可以保证没有网络问题,但由于某种原因无法通过网络访问码头。是否有任何特定配置可以通过 LAN 访问?

我的应用程序是 Maven 项目,我从 eclipse 运行它,设置在 web.xml 和 pom.xml 中。

4

3 回答 3

18

以下答案适用于 Jetty 8 及更早版本(Jetty 9+ 命令和类名不同)

确保检查您正在侦听的接口。

示例(来自日志)

2012-08-10 14:52:26.470:INFO:oejs.AbstractConnector:Started SelectChannelConnector@127.0.0.1:8080

这表示服务器仅在 127.0.0.1 (localhost) 上进行侦听。您可以查看日志,也可以在机器 A 上进行快速测试。打开 Web 浏览器并测试这两个 URL

  • http://localhost:8080/
  • http://192.168.0.6:8080/

如果它对两个 URL 都有响应,那么您可能已正确设置它并需要处理防火墙问题。如果它适用于一个,但不适用于另一个,那么您只在 1 个接口上收听。

要让码头监听所有接口,请使用特殊 IP 0.0.0.0

$ java -Djetty.host=0.0.0.0 -jar start.jar
2012-08-10 14:53:25.338:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

此时,jetty 正在侦听您机器上的所有接口。

注意:您也可以编辑 etc/jetty.xml 并永久设置主机。

      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host">0.0.0.0</Set>
      ...
于 2012-08-10T21:58:43.890 回答
1

2020-07-20

作为@JoakimErdfelt answer的补充,在 Jetty 9.4.12.v20180830(及更高版本)上,您可以以编程方式将主机配置为:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;

    Server server = new Server();       

    ServerConnector httpConnector = new ServerConnector(server);
        httpConnector.setHost("0.0.0.0"); // <--------- !
        httpConnector.setPort(12345);
        httpConnector.setIdleTimeout(5000);
        server.addConnector(httpConnector);
于 2020-07-20T11:05:18.033 回答
0

所以我点击了这个,在调试了一个下午的奇怪行为后,我发现 Jetty 只是将自己广播到 IPv6,并跳过 IPv4,v4 端口被分配给另一个应用程序。

我的解决方案?跳转到另一个端口...

于 2014-09-09T20:00:00.063 回答