簡體   English   中英

瀏覽器無法連接到Jetty服務器

[英]Browser can't connect to Jetty server

我在StackOverflow上看到了另一個類似的問題,但是他得到的答案非常漂亮,荒謬。 “連接到本地主機。” -好吧。

無論如何,問題是我終於讓我的嵌入式Jetty服務器編譯並運行了,問題是因為我在API中使用它,所以我需要源代碼,而不僅僅是依賴。

我正在運行最基本的hello-world代碼,服務器正在啟動,但是我的瀏覽器都無法建立連接。

這是代碼:

try {
    httpServer = new Server(8080);
    httpServer.setHandler(new JettyPage());
    httpServer.start();
} catch(Exception e) {
    e.printStackTrace();
}

自然,這是JettyPage.java:

public class JettyPage extends AbstractHandler {

    @Override
    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html;charset=utf-8");
        response.setStatus(HttpServletResponse.SC_OK);
        baseRequest.setHandled(true);
        response.getWriter().println("<h1>Hello world.</h1>");
    }

}

控制台中的輸出:

2014-11-07 07:01:05.155:INFO::main: Logging initialized @599ms
2014-11-07 07:01:05.190:INFO:oejs.Server:main: jetty-9.3.0.M1
2014-11-07 07:01:05.215:INFO:oejs.ServerConnector:main: Started ServerConnector@6e5e91e4{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2014-11-07 07:01:05.215:INFO:oejs.Server:main: Started @660ms

火狐:

The connection was reset

歌劇:

No data received

鉻:

No data received

---是的,我正在連接到localhost:8080,我也嘗試過:0.0.0.0:8080和127.0.0.1:8080

注意:如果我禁用在端口80上運行的apache服務器,並將Jetty綁定到端口80,則仍然無法連接。

我遇到了完全相同的問題...非常簡單的代碼,即使它是從命令行和IDE編譯並運行的,也無法使瀏覽器連接到Jetty。 最后,將其追溯到不匹配的servlet和Jetty jars(至少我認為是造成問題的原因)。 對我有用的是javax-servlet-api-3.1.0.jar和jetty-all-9.2.8.v20150217.jar。 一旦開始使用這些代碼,則可以在命令行或從NetBeans IDE編譯代碼的情況下進行連接。

對於像我這樣的原始對象,大多數在線命令行編譯示例都使用Linux / Unix路徑分隔符(“:”)。 我花了幾分鍾才弄明白在Windows計算機上我需要另一台(“;”):

javac -cp。; javax.servlet-api-3.1.0.jar; jetty-all-9.2.8.v20150217.jar HelloWorld.java

希望能有所幫助。

如果您完全按照HelloWorld的示例進行操作,則將得到響應。

您的運行時環境仍然存在問題。

這是您正在運行的Windows嗎? 如果是這樣,請嘗試將端口設置為8080以外的其他端口(嘗試38080),因為您可能已經在該端口上安裝了某些端口,在這種情況下Windows不會拋出錯誤或警告。 (在其他操作系統上,這將導致綁定異常)

您是否有任何指示錯誤或警告的日志記錄輸出?

即使在啟動服務器或提供某些內容時出錯,控制台上也應該有大量的日志輸出。

如果要啟用非常詳細的日志記錄,可以將-Dorg.eclipse.jetty.LEVEL=DEBUG添加到Java執行中。

Windows版本

> java -Dorg.eclipse.jetty.LEVEL=DEBUG -cp .;servlet-api.jar;jetty-all.jar HelloWorld

Linux / OSX / Unix版本

$ java -Dorg.eclipse.jetty.LEVEL=DEBUG -cp .:servlet-api.jar:jetty-all.jar HelloWorld

暫無
暫無

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

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