Dropwizard: невозможно обслуживать статический HTML - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я работаю над предоставлением статической HTML-страницы в Dropwizard по корневому пути "/".До сих пор я только получил страницу с сообщением об ошибке «Ошибка HTTP 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 был подан здесь;Я бы хотел, чтобы он обслуживался с правами root, поскольку путь / профиль / v1 используется всеми моими службами.Это было запрошено, чтобы помочь настроить DNS.

1 Ответ

0 голосов
/ 26 сентября 2018

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

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

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

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

Вам нужно будет включить dropwizard-assets в зависимости вашего проекта.

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

...