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 ответ

Решение

После нескольких модификаций вашего кода, он получил рабочее состояние.

  1. Путь AssetBundle рассчитывается из папки ресурсов проекта. Поэтому добавьте путь относительно этого. Вот assets каталог находится в ${Project Root}/src/main/resources каталог

    bootstrap.addBundle(new AssetsBundle("/assets/", "/"));
    
  2. Удалить явную запись реестра Джерси. Я считаю, что это унаследовано от конфигурации.

    environment.jersey().setUrlPattern("/*"); /*this line should be removed*/
    

Для справки, только что создал пример проекта со статическими активами.

Другие вопросы по тегам