私はJettyを埋め込むことで、自分のアプリケーション用の簡単なWebサービスを設定しようとしています。静的コンテンツ(最終的にはGWTアプリになります)とアプリケーション用のJSONステータスメッセージを吐き出すカスタムサーブレットを提供する単純なHTTPサーバーと、2つの異なるWebサービスを利用したいと思います。埋め込みJettyで静的リソースとカスタムサービスを設定するにはどうすればよいですか?
+ dist/
- MyApp.jar
+ lib/
+ html/
- index.html
そして、ここでは、私が埋め込まれたサーバーを構成するために、これまで持っているものです。
マイ配布フォルダ構造は次のようになります。 http://localhost/data/
にアクセスしたときにカスタムサーブレットからテスト出力を正しく取得できますが、DefaultServletでindex.htmlファイルを見つけることができません。
public Webserver(int port) {
server = new Server(port);
ServletContextHandler context = new ServletContextHandler();
context.setResourceBase("./html/");
server.setHandler(context);
JsonDataApiServlet dataServlet = new JsonDataApiServlet();
DefaultServlet staticServlet = new DefaultServlet();
context.addServlet(new ServletHolder(dataServlet), "/data/*");
context.addServlet(new ServletHolder(staticServlet), "/*");
}
これは、物事に桟橋を埋め込んでいる人々のための共通の仕事であるようです。私は正しい道に就いていますか?
編集
この問題は、相対パスを突堤内部計算される方法の誤解によるものであったが判明しました。私はjava -jar dist\MyApp.jar
を使ってdistフォルダの上にある1つのフォルダからこれを実行していて、Jettyは正しいdist\html
ではなくdist\..\html
を探していました。 distフォルダの中からjarファイルを実行すると、問題が修正されます。私はdistディレクトリの中から実行する必要なしに、どのように動作させたかを答えます。
_私はDefaultServletでindex.htmlファイルを見つけられないようです。したがって、 "/index.html"にアクセスしたときにどのような動作が見られますか? Jettyはどのログ出力を生成しますか? – Tim
ありがとうTim、そのコメントは正しい方向に私を導きます。 – Collin