无法让Jetty HelloWorld示例正常工作

时间:2014-03-18 02:50:16

标签: java eclipse embedded-jetty

编辑:看来这个问题可能已经本地化为我使用的javax.servlet版本。我从网站获得了2.5并且它没有工作,虽然使用我从教授发布的演示项目获得的不同版本,它似乎工作。不确定它究竟是哪个版本。


使用https://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld中的以下代码,我似乎无处可去,我不知道为什么......

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

import java.io.IOException;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

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

    public static void main(String[] args) throws Exception
    {
        Server server = new Server(8080);
        server.setHandler(new HelloWorld());

        server.start();
        server.join();
    }
}

我已经下载了它所说的两个jar文件,并编译并运行了以下程序:

Q:\Documents\Development\Eclipse\3715a5\src>javac -cp "..\lib\*;." HelloWorld.java
Q:\Documents\Development\Eclipse\3715a5\src>java -cp "..\lib\*;." HelloWorld

运行时,我的标准输出上有以下输出:

2014-03-18 00:09:57.825:INFO::main: Logging initialized @89ms
2014-03-18 00:09:57.872:INFO:oejs.Server:main: jetty-9.1.3.v20140225
2014-03-18 00:09:57.913:INFO:oejs.ServerConnector:main: Started ServerConnector@edd9de{HTTP/1.1}{0.0.0.0:8080}
2014-03-18 00:09:57.915:INFO:oejs.Server:main: Started @182ms

但是当我使用任何网络浏览器浏览http://localhost:8080时,我什么都没得到。我尝试使用putty通过telnet连接到localhost:8080,然后我得到&#34;软件导致连接中止&#34;。为了确定,我已经禁用了我的Windows防火墙,而且我没有到达任何地方。

2 个答案:

答案 0 :(得分:1)

问题似乎与我正在使用的javax.servlet版本有关。我从链接的网站上下载了2.5版本,并且自从我的教授为这项任务尝试了一个不同的版本(不确定哪一个),它正在运行。

答案 1 :(得分:0)

试试这样:

Server serverJetty = new Server();

SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(jettyPort);
connector.setHost(jettyHost);
serverJetty.setConnectors(new Connector[] { connector });