簡體   English   中英

如何使 jetty 服務器可以從 LAN 訪問?

[英]how to make jetty server accessible from LAN?

我正在嘗試使用 192.168.0.6:8080(A 的 IP)從 LAN 上的另一台機器 (B) 訪問網絡應用程序(部署在我的機器 (A) 的 jetty8 中),但它不工作。 雖然我通常可以使用 192.168.0.5(B 的 IP)從 A 訪問機器 B 上 AppServ 上托管的應用程序。

我在機器A的localhost:8080上可以正常訪問應用。

我可以保證沒有網絡問題,但是由於某種原因無法通過網絡訪問jetty。 是否有任何特定配置可以通過 LAN 訪問?

我的應用程序是 Maven 項目,我從 eclipse 運行它,設置在 web.xml 和 pom.xml 中。

以下答案適用於 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(本地主機)上偵聽 您可以在機器 A 上查看日志,或者只是進行快速測試。打開 Web 瀏覽器並測試這兩個 URL

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

如果它對兩個 URL 都有響應,那么您可能已正確設置它並需要處理防火牆問題。 如果它適用於一個,但不適用於另一個,那么您只在一個接口上收聽。

要讓碼頭監聽所有接口,請使用特殊 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>
      ...

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);

所以我點擊了這個,在調試了一個下午的奇怪行為之后,我發現 Jetty 只將自身廣播到 IPv6,並跳過了 IPv4,v4 端口被分配給了另一個應用程序。

我的解決方案? 跳轉到另一個端口...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM