2015-06-22 54 views
0

我正在嘗試創建一個具有REST API並可以提供靜態html等文檔的Web服務。目前,我已經得到了REST(新澤西州2.17)API工作正常,但我掙扎就可以提供資源,比如我的index.html歡迎文件嵌入式Jetty REST服務

項目結構

src 
--main 
----java 
------resource 
--------RestResource.java 
------app 
--------LocalRunner.java 
----webapp 
------index.html 

LocalRunner.java

public class LocalRunner { 
    private final Server server; 

    public LocalRunner() { 
     server = new Server(8315); 
    } 

    public void start() throws Exception {  
     // REST 
     WebAppContext restHandler = new WebAppContext(); 

     restHandler.setResourceBase("./"); 
     restHandler.setClassLoader(Thread.currentThread().getContextClassLoader()); 

     ServletHolder restServlet = restHandler.addServlet(ServletContainer.class, "/rest/*"); 
     restServlet.setInitOrder(0); 
     restServlet.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "resource"); 

     // Web 
     ResourceHandler webHandler = new ResourceHandler(); 
     webHandler.setResourceBase("./"); 
     webHandler.setWelcomeFiles(new String[]{"index.html"}); 

     // Server 
     HandlerCollection handlers = new HandlerCollection(); 
     handlers.addHandler(restHandler); 
     handlers.addHandler(webHandler); 

     server.setHandler(handlers); 
     server.start(); 
    } 

    public static void main(String[] args) throws Exception { 
     new LocalRunner().start(); 
    } 
} 

擊中localhost:8315/rest/someRestEndpoint工作正常,但如果我嘗試只打localhost:8315我得到一個目錄結構時,我希望我的index.html歡迎文件。我究竟做錯了什麼?

注意我沒有使用WEB.XML,因爲我試圖在以上的類中執行所有配置。


依賴關係,如果有幫助(搖籃)

def jettyVersion = '7.2.2.v20101205'; 
compile "org.eclipse.jetty:jetty-server:${jettyVersion}" 
compile "org.eclipse.jetty:jetty-webapp:${jettyVersion}" 
compile "org.eclipse.jetty:jetty-servlet:${jettyVersion}" 

def jerseyVersion = '2.17' 
compile "org.glassfish.jersey.core:jersey-server:${jerseyVersion}" 
compile "org.glassfish.jersey.containers:jersey-container-servlet-core:${jerseyVersion}" 
+1

[Jetty 7 is EOL(End of Life)](https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00069.html) - 考慮儘快升級(其不安全以運行EOL服務器開放的互聯網) –

回答

1

原來的請求被分派到處理程序中,他們被添加到集合中的順序和restHandler必須已設置響應完成。因此,請求從未將其發送到webHandler,並且歡迎文件從未添加到響應中。此外ResourceHandler正在尋找index.html的基礎目錄,將resourceBase設置爲src/main/webapp修復了此問題。