2013-02-19 124 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