Загрузка web.xml для интеграционных тестов с Jetty
Вопрос
ОК, это как-то связано с: Использование jetty для программной установки и запуска тестов сервлетов
получил там отличные ответы и смог программно загружать сервлеты, и все это просто потрясающе.
Однако я хотел бы загрузить web.xml в тесте (все в пути к классам) и запустить сервер (используя текущий путь к классам) - я видел в документах, как указать его на каталог для сделайте это, но я хочу отработать путь к классам (лучше для тестирования на месте).По сути, проверка моего web.xml.
(это не имеет значения, но это приложение находится в Scala, но у меня не было с этим проблем, все работает, как рекламируется).
Решение
Похоже, что вы хотите программно загрузить правильное веб-приложение, а не загружать отдельные сервлеты (и я думаю, вы хотите сделать это, не имея полного файла WAR для работы).
Server server = new Server( port );
WebAppContext root = new WebAppContext();
root.setWar("/path/to/somewhere");
root.setContextPath("/");
server.addHandler( root );
server.start();
Хитрость в том, что /path/to/somewhere
должен содержать WEB-INF
каталог и ваш web.xml
файл должен жить там.Ничего больше не должно находиться в этой структуре каталогов, поскольку все остальное может быть автоматически загружено из вашего пути к классам (хотя, если вы хотите, вы можете сделать это путем к реальному файлу WAR или полному развернутому дереву WAR).