Я пытаюсь настроить простой веб-сервис для своего приложения, встраивая Jetty. Мне бы хотелось иметь две разные веб-службы: простой HTTP-сервер, который просто обслуживает статический контент (который в конечном итоге станет приложением GWT) и пользовательский сервлет, который может выдавать сообщения о состоянии JSON для приложения.
Моя структура папок дистрибутива выглядит примерно так:
+ 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), "/*");
}
Кажется, что это обычная задача для людей, внедряющих Jetty в вещи ... я даже на правильном пути?
Редактировать
Оказывается, эта проблема возникла из-за неправильного понимания того, как относительные пути вычисляются в Причале. Я запускал это из одной папки над папкой dist, используя java -jar dist\MyApp.jar
, и Jetty искала dist\..\html
вместо правильного dist\html
. Запуск jar из папки dist устраняет проблему. Я отвечу с тем, как я сделал это без необходимости запуска из каталога dist.