さて、私はJettyに私が望むことをさせる方法を理解しました。それは、いくつかのカスタムサーブレットの処理に加えて、いくつかの静的コンテンツをホストすることでした。
表面上、これを行う方法は、DefaultServletを作成し、それに応じてresourceBaseとpathSpecを設定して、/ www/*上のディレクトリをホストできるようにすることでした。ただし、これは機能しませんでした。実際、pathSpecsが実際にどのように機能するか、または定義されることになっているのかについての説明は見つかりませんでした。
したがって、追加のServletHandlerとコンテキストを作成し、元のコンテキストと静的コンテンツホスティング用の新しいコンテキストの両方をサーバーに追加する必要がありました。
私はそうしました:
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ベースのアプリに静的コンテンツホスティングを追加することができました。