行为解释

时间:2011-02-10 04:06:31

标签: java jetty

有人可以解释为什么这段代码在startFileHTTP()时停止了吗? jetty服务器启动但程序的其余部分不起作用。我需要研究多线程编程吗?

try {
     startFileHTTP();
} catch (Exception e) {
     e.printStackTrace();
}

public void startFileHTTP() throws Exception {
     Server server = new Server();
     SelectChannelConnector connector = new SelectChannelConnector();
     connector.setPort(8080);
     server.addConnector(connector);

     ResourceHandler resource_handler = new ResourceHandler();
     resource_handler.setDirectoriesListed(true);
     resource_handler.setWelcomeFiles(new String[] { "index.html" });

     resource_handler.setResourceBase("/test");

     HandlerList handlers = new HandlerList();
     handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
     server.setHandler(handlers);

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

控制台:

2011-02-10 13:55:47.828:INFO::jetty-7.1.6.v20100715
2011-02-10 13:55:47.953:INFO::Started SelectChannelConnector@0.0.0.0:8080

1 个答案:

答案 0 :(得分:2)

我认为原因是函数的最后一行是

server.join();

此函数仅在server线程完成运行时返回。看起来这不是你想要的,因为看起来你希望它在后台运行。摆脱这条线应该解决这个问题。

顺便说一句,你可能不应该从Exception投掷startFileHTTP。这使得不太清楚可以抛出什么异常并减少调用者对他们可能期望看到的各种错误的信息量。