Хорошо, я понял, как заставить Jetty делать то, что я хотел, что еще раз должно было разместить некоторый статический контент в дополнение к обработке некоторых пользовательских сервлетов.
Очевидно, что для этого необходимо создать DefaultServlet и установить соответственно resourceBase и pathSpec, чтобы разрешить мне размещать некоторый каталог в/www/*. Однако это никогда не срабатывало. Фактически, я не мог найти никакого объяснения относительно того, как на самом деле работают pathSpecs или должны быть определены.
Таким образом, мне пришлось создать дополнительный ServletHandler и Context и добавить как мой оригинальный Контекст, так и новый для статического хостинга контента на Сервер.
Я сделал это так:
Server srv = new Server(port);
// create context and handler for my servlets
Context ctx = new Context();
ServletHandler sh = new ServletHandler();
// ... adding servlets here ...
// create context and handler for static content
ServletHandler sh2 = new ServletHandler();
ServletHolder holder = new ServletHolder(new DefaultServlet());
holder.setInitParameter("resourceBase", staticResourceBase);
sh2.addServletWithMapping(holder, "/*");
staticContext.setContextPath(staticPathSpec);
staticContext.setServletHandler(sh2);
// add both contexts to server
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { staticContext, ctx });
srv.setHandler(contexts);
Это не может быть предпочтительным способом сделать это, но это позволит мне добавить статический контент хостинг на мой Jetty основе приложения программно.
Спасибо за информацию, но это не совсем то, что я пытаюсь выполнить. У меня нет каталога WEB-INF (поскольку я не обслуживаю веб-приложение, я думаю?) Я пытаюсь настроить программный продукт по умолчанию и устанавливать параметры в коде, но он, похоже, не работает. – Tom 2010-12-01 22:41:09