我在StackOverflow上看到了这样的另一个问题,但他得到的答案很漂亮,很可笑。 “连接到localhost。” - 好吧,好吧。
无论如何,问题是我终于让我的嵌入式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,我仍然无法连接。
答案 0 :(得分:1)
我有完全相同的问题...非常简单的代码,即使它从命令行和IDE编译并运行,也无法让浏览器连接到Jetty。最后追溯到不匹配的servlet和Jetty罐子(至少我认为这导致了问题)。对我有用的是javax-servlet-api-3.1.0.jar和jetty-all-9.2.8.v20150217.jar。一旦我开始使用那些我可以连接的代码是在命令行或NetBeans IDE中编译的。
对于像我这样的原始noob,命令行编译的大多数在线示例都使用Linux / Unix路径分隔符(“:”)。我花了几分钟才弄清楚Windows机器上我需要一个不同的(“;”):
javac -cp .; javax.servlet-api-3.1.0.jar; jetty-all-9.2.8.v20150217.jar HelloWorld.java
希望有所帮助。
答案 1 :(得分:0)
如果您完全遵循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