2013-02-19 89 views
8

是否可以使用嵌入式Jetty來提供來自目錄X的靜態文件,但映射到URL Y?我有目錄「網絡」下存儲的靜態文件,但我想要的URL是像http://host/myapp將jetty ResourceHandler映射到URL

我已經成功地跑了ResourceHandler在以下方式配置服務器:

ResourceHandler ctx = new ResourceHandler(); 
ctx.setResourceBase("path-to-web"); 
HandlerList list = new HandlerList(); 
list.addHandler(ctx); 
... 
server.setHandler(list); 

但結果,而不是根據所需的URL映射/web下服務的文件。

回答

18

ResourceHandler沒有上下文配置,但您可以簡單地將其包裝在ContextHandler中以實現該目的。

試試這個:

ResourceHandler resHandler = new ResourceHandler(); 
resHandler.setResourceBase("path-to-web"); 
ContextHandler ctx = new ContextHandler("/my-files"); /* the server uri path */ 
ctx.setHandler(resHandler); 
server.setHandler(ctx); 

,這將有助於/my-files作爲文件系統path-to-web

1

以上的碼頭9不起作用的ResourceHandler內容,但這:

ContextHandler contextHandler = new ContextHandler("/my-files"); 
contextHandler.setResourceBase("/tmp/static"); 

ResourceHandler resourceHandler = new ResourceHandler(); 
contextHandler.setHandler(resourceHandler); 

server.setHandler(contextHandler); 
+0

這似乎不適用於碼頭9.您能否提供一些鏈接到某些文檔? – 2015-02-05 13:54:53

+0

我已經爲jetty 9創建了一個單獨的問題 - http://stackoverflow.com/questions/28346438/resourcehandler-stop-hosting-files-with-jetty-9-404-not-found-error-works-fin will be很高興如果你給我一個提示 – 2015-02-05 14:42:46