Обслуживание статического контента вне WAR с помощью Embedded Jetty - PullRequest
2 голосов
/ 12 мая 2019

У меня есть WAR (обслуживается через Embedded Jetty), в который я хотел бы включить статические файлы за пределами WAR . Мои цели:

  • Служите статическим файлам по пути за пределами WAR относительно каталога, в котором работает Embedded Jetty. Поэтому, если я вызову банку в /srv/app, я бы хотел настроить URL-адрес http://myapp.com/static/js/my.js для обслуживания /src/app/public/js/my.js.
  • Безопасный: нет списков каталогов или ../ путь к выходу
  • Не изобретать велосипед: я не хочу писать новый сервлет, а скорее использую существующие возможности
  • В идеале (не требуется): скрыть статическое содержимое в WAR, чтобы, если у меня есть /src/app/public/index.html, этот файл будет обработан, а если WAR не существует, index.html WAR будет обработан.

Вот что я изучил и где я застрял:

  1. DefaultServlet: кажется идеальным, но я не могу найти способ, чтобы он обслуживал файлы за пределами WAR. Есть ли способ для DefaultServlet обслуживать статический контент вне WAR с путями относительно pwd приложения?
  2. Настройка Jetty, как описано в https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html; Казалось бы, это было бы идеально, но при копировании ничего не делало (это был NOOP).
  3. ResourceHandler: Это правильный способ сделать это? Я не смог понять, как использовать это для достижения своих целей

1 Ответ

0 голосов
/ 13 мая 2019

ResourceHandler: Это правильный способ сделать это?Я не смог понять, как использовать это для достижения моих целей

Не используйте ResourceHandler, его значение ниже DefaultServlet.

НастройкаПричал, как описано в https://www.eclipse.org/jetty/documentation/current/static-content-deployment.html;Казалось бы, это было бы идеально, но при копировании, похоже, ничего не делало (это был NOOP).

Это работает, только если вы не используете один и тот же contextPathв качестве развернутого веб-приложения.

Существует ли способ для DefaultServlet обслуживать статический контент вне WAR, с путями относительно pwd приложения?

Да, и этобыл задокументирован на stackoverflow несколькими различными способами.Ключ заключается в том, что вы будете использовать дополнительные DefaultServlet записи, определенные с их собственным «Базовым путем к ресурсам» (который должен быть полной записью пути, без относительных путей), на разных url-patterns.

См .:

...