좋아요, 제티가 원하는대로 할 수있는 방법을 알아 냈습니다. 일부 커스텀 서블릿을 처리하는 것 외에도 일부 정적 컨텐츠를 호스트하는 것이 었습니다. 표면적으로 DefaultServlet을 만들고 그에 따라 resourceBase 및 pathSpec을 설정하여/www/*에 일부 디렉토리를 호스트 할 수있게했습니다. 그러나 이것은 결코 효과가 없었습니다. 사실 pathSpec이 실제로 작동하는지 또는 정의되어야하는지에 대한 설명을 찾을 수 없습니다.
따라서 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);
이이 작업을 수행 할 수있는 좋은 방법되지 않을 수도 있습니다,하지만 그것은 나를 프로그램 내 부두 기반 응용 프로그램에 호스팅 정적 콘텐츠를 추가 할 수 있도록했다.
출처
2010-12-02 21:29:38
Tom
정보를 제공해 주셔서 감사합니다.하지만 그게 내가 달성하려고하는 것은 아닙니다. 나는 WEB-INF 디렉토리가 없다. (나는 추측 할 수있는 웹 애플리케이션을 제공하지 않는다.) 프로그래밍 방식으로 DefaultServlet을 설정하고 매개 변수를 설정하려고하는데 작동하지 않는 것 같다. – Tom