【问题标题】:Browser can't connect to Jetty server浏览器无法连接到 Jetty 服务器
【发布时间】:2015-01-04 06:53:14
【问题描述】:

我在 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,我仍然无法连接。

【问题讨论】:

标签: java servlets websocket jetty embedded-jetty


【解决方案1】:

我遇到了完全相同的问题...非常简单的代码,即使它从命令行和 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

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    如果您完全按照 HelloWorld 示例进行操作,您将会得到响应。

    你的运行环境还是有问题。

    这是您正在运行的窗口吗?如果是这样,请尝试将端口设置为 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      相关资源
      最近更新 更多