Определение базы ресурсов для scalatra со встроенным Jetty

У меня есть приложение на основе scalatra со встроенным причалом.

Моя окончательная структура вывода - /lib /bin /etc, а webapp находится под etc.

При запуске веб-приложения есть строка, которая устанавливает resourceBase - что это должно быть установлено в этом случае?

val context = new WebAppContext()
context setContextPath "/"
context.setResourceBase(???)

person LK__    schedule 29.01.2015    source источник


Ответы (1)


Когда вы используете WebAppContext в качестве выбранного ContextHandler в Jetty, вы ограничены всеми требованиями для WebApp.

А именно:

  • ${resourceBase}/WEB-INF/classes/ является основным источником классов
  • ${resourceBase}/WEB-INF/lib/*.jar – это вторичный источник классов и конфигурации веб-приложения.
  • ${resourceBase}/WEB-INF/web.xml — это дескриптор веб-приложения (необязательный в спецификации сервлета 3.0+)
  • ${resourceBase}/ is the lookup point for various methods in javax.servlet.ServletContext such as:
    • String getRealPath(String path)
    • URL getResource(String path)
    • InputStream getResourceAsStream(String path)
    • Set<String> getResources(String path)
  • Запрошенные ресурсы, которые не соответствуют ни одному из ваших сервлетов или фильтров, затем будут обрабатываться DefaultServlet, который может обслуживать статические ресурсы (например, *.html, *.css, *.js) из указанного ${resourceBase}.

Это лишь некоторые из причин, по которым нужно правильно определить базу ресурсов.

Удачи,

person Joakim Erdfelt    schedule 30.01.2015