2013-02-19 10 views
8

Czy jest możliwe, aby za pomocą wbudowanego Jetty wyświetlać pliki statyczne z katalogu X, ale zamapować je na URL Y? Mam pliki statyczne przechowywane w katalogu "web", ale chcę, aby adres URL był podobny do http://host/myapp.Mapowanie pomostu ResourceHandler pod adres URL

już z powodzeniem prowadził serwer skonfigurowany z ResourceHandler w następujący sposób:

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

Ale wynik jest obsługujących pliki pod /web a nie pod żądanym mapowaniem URL.

Odpowiedz

18

ResourceHandler nie ma kontekstu konfigurowalnego, ale można go po prostu zawinąć w ContextHandler, aby to osiągnąć.

Spróbuj to zamiast:

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); 

który posłuży /my-files jako zawartość ResourceHandler systemu plików path-to-web

1

Powyższe nie działa dla Jetty 9, ale to robi:

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

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

server.setHandler(contextHandler); 
+0

to nie działa z pomostem 9. Czy możesz podać link do jakiegoś dokumentu? –

+0

Utworzyłem osobne pytanie dotyczące pomostu 9 - http://stackoverflow.com/questions/28346438/resourcehandler-stop-hosting-files-with-jetty-9-404-not-found-error-works-fin Cieszę się, jeśli dasz mi wskazówkę –