2011-02-10 19 views
0

誰かがこのコードが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 [email protected]:8080 

答えて

2

は、私はその理由は、関数の最後の行がserverスレッドの実行が終了したときに、この機能だけを返し

server.join(); 

であるということだと思います。それはあなたがバックグラウンドで実行したいように見えるので、それはあなたが望むものではないようです。この行を取り除くことでこれを修正する必要があります。

ExceptionstartFileHTTPから投げてはいけません。これにより、どのような例外がスローされるのかがはっきりしなくなり、発信者がどのような種類のエラーを見ているかについての情報量が減少します。