如何从局域网访问jetty服务器?

时间:2012-08-04 10:56:17

标签: java jetty localhost maven-3 lan

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

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

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

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

3 个答案:

答案 0 :(得分:17)

以下答案适用于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/

如果它对两个网址都有响应,那么您可能已正确设置并需要处理防火墙问题。 如果它适用于一个而不是另一个,那么你只是在1个界面上进行监听。

要让jetty侦听所有接口,请使用特殊的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>
      ...

答案 1 :(得分:1)

2020-07-20

作为@JoakimErdfelt IOS should be set to 1的补充,在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);

答案 2 :(得分:0)

所以我点击这个,经过一个下午的调试奇怪的行为,我发现Jetty只向IPv6广播,并且跳过IPv4,v4端口被分配给另一个应用程序。

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