2015-04-08 6 views
1

Я использую встроенный Jetty для обслуживания статического контента из «общественной» папки в моем проекте:Путь к статическому контенту с Embedded Jetty

Server server = new Server(9999); 
    ServletContextHandler context = new ServletContextHandler(); 
    context.setContextPath("/"); 

    ServletHolder staticHolder = new ServletHolder(new DefaultServlet()); 
    staticHolder.setInitParameter("resourceBase", "./public"); 
    context.addServlet(staticHolder, "/*"); 

    server.setHandler(context); 
    server.start(); 
    server.join(); 

, который работает отлично. Однако, если я изменю

context.addServlet(staticHolder, "/*"); 

в

context.addServlet(staticHolder, "/ui/*"); 

или

context.addServlet(staticHolder, "/ui"); 

или что-нибудь другое, чем "/ *" Я получаю 404. В принципе я могу видеть мою страницу индекса в http://127.0.0.1:9999/index.html , и я хотел бы изменить его на http://127.0.0.1:9999/ui/index.html.

Благодаря

+0

возможно дубликат [молы встроенный файловый сервер сервлет] (http://stackoverflow.com/questions/20207477/jetty-embedded-file-server -servlet) –

+0

обратите внимание на 'pathInfoOnly' в предыдущем ответе –

+0

Это тот код, который мне нужен! Я не думаю, что это дубликат, так как мой вопрос был конкретно о пути. – Avalanche

ответ

0

Как писал здесь:

Serving static files from alternate path in embedded Jetty

мне нужно добавить:

staticHolder.setInitParameter("pathInfoOnly", "true"); 

, который позволил мне изменить путь и он ведет себя правильно:

context.addServlet(staticHolder, "/ui/*"); 

, обеспечивающий доступ к статическому содержимому на http://127.0.0.1:9999/ui/index.html

Спасибо!

0

Большой ответ Лавина. Кроме того, если вы обслуживания статического контента, вы должны добавить
staticHolder.setInitParameter("useFileMappedBuffer", "true"); избежать Locked Files on Windows

Смежные вопросы