自己完結型である必要があるプロジェクトに取り組んでいるので、アプリにJettyを埋め込むことにしました。静的HTMLページといくつかのJSPページを提供し、いくつかのカスタムサーブレットも使用します。ただし、これらすべてを実現するために組み込みJettyをセットアップする方法の完璧な例を見つけました(http://thinking.awirtz.com/2011/11/03/embedded-jetty-servlets-and-jsp/)。 Jettyを使用してJSPページまたはサーブレットを操作するのはこれが初めてなので、いくつかの基本的な質問があります。
コードは次のとおりです(上記のリンクにあります)。
class RunServer {
public static void main(String args[]) {
System.out.println("Initializing server...");
final ServletContextHandler context =
new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.setResourceBase("webapp");
context.setClassLoader(
Thread.currentThread().getContextClassLoader()
);
context.addServlet(DefaultServlet.class, "/");
final ServletHolder jsp =
context.addServlet(JspServlet.class, "*.jsp");
jsp.setInitParameter("classpath", context.getClassPath());
// add your own additional servlets like this:
// context.addServlet(JSONServlet.class, "/json");
final Server server = new Server(8080);
server.setHandler(context);
System.out.println("Starting server...");
try {
server.start();
} catch(Exception e) {
System.out.println("Failed to start server!");
return;
}
System.out.println("Server running...");
while(true) {
try {
server.join();
} catch(InterruptedException e) {
System.out.println("Server interrupted!");
}
}
}
}
カスタムサーブレットを追加しましたが、うまく機能しましたが、静的コンテンツ(HTMLファイルなど)に問題があります。それらにアクセスしようとすると、「ファイルが見つかりません」というエラーが発生し続けます。これは、HTMLファイルをどこに配置するかが100%わからないためだと確信しています。「context.setResourceBase( "webapp");」という行を想定しています。は、さまざまなサーブレットにファイル(つまり、リソース)を探す場所を指示する行ですが、「webapp」が実際に何を指しているのかわかりません。それはフォルダ、クラス名、実際のファイルですか?
「webapp」が実際に何であるか(またはポイントするか)、および静的ファイルをプロジェクトのどこに配置するかについてのヘルプを高く評価しました。
ありがとう、ハリー