Dropwizard: невозможно обслуживать статический HTML
В настоящее время я работаю над предоставлением статической HTML-страницы в Dropwizard по корневому пути "/". До сих пор я только получил страницу с сообщением об ошибке "HTTP ERROR 404 Проблема с доступом /. Причина: не найдена".
При этом я следовал документации по Dropwizard для 1.2.2, а также этому руководству здесь, с некоторыми изменениями в коде, чтобы мои службы работали. Мой корневой путь в моем файле.yml /profile/v1
чтобы мои сервисы getAll работали (когда я только начинал, я получал сообщение об ошибке Multiple servlets map to path /*
,.Yml выглядит так:
server:
type: simple
applicationContextPath: /
rootPath: /profile/v1
Кроме того, моя инициализация в основном классе приложения:
@Override
public void initialize(final Bootstrap<AutomationConfigServiceConfiguration> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/../resources", "/", "index.html"));
}
Это зарегистрировано на Джерси как:
environment.jersey().setUrlPattern("/*");
где /resources
каталог, в котором я храню свои статические активы, вне java
каталог.
До сих пор я смог заставить мои службы работать нормально в этой настройке. Например, когда я захожу на localhost:8080/profile/v1/name/getAll, я могу извлечь все имена из базы данных, и если я захожу на localhost:8080/profile/v1/title / getAll, я получить все названия из базы данных. Если я использую localhost:8080, с или без "/", я просто получаю страницу 404, говоря, что не могу найти "/". Теоретически это должно быть очень просто, поэтому я не уверен, что еще мне следует делать.
Редактировать:
Когда я захожу в /profile/v1, я получаю следующее:
{
code: 404,
message: "HTTP 404 Not Found",
}
Я должен отметить, что я не хочу, чтобы мой html служил здесь; Я бы хотел, чтобы он обслуживался в корне, поскольку путь / профиль / v1 используется всеми моими службами. Это было запрошено, чтобы помочь настроить DNS.
1 ответ
После нескольких модификаций вашего кода, он получил рабочее состояние.
Путь AssetBundle рассчитывается из папки ресурсов проекта. Поэтому добавьте путь относительно этого. Вот
assets
каталог находится в${Project Root}/src/main/resources
каталогbootstrap.addBundle(new AssetsBundle("/assets/", "/"));
Удалить явную запись реестра Джерси. Я считаю, что это унаследовано от конфигурации.
environment.jersey().setUrlPattern("/*"); /*this line should be removed*/
Для справки, только что создал пример проекта со статическими активами.