Отправка / пересылка сервлету, который обслуживает статический контент из другого пакета

Как разработчик, совершенно новый для Spring и OSGi и возвращающийся в Tomcat после долгого времени, я даже не знаю, смогу ли я правильно задать этот вопрос. Но я надеюсь, что кто-то сможет понять, где я застрял и как мне действовать.

Установка включает в себя пакеты Tomcat 7 в контейнере Equinox OSGi. Пакет обеспечивает "MainDispatcherServlet", который расширяет org.springframework.web.servlet.DispatcherServlet, Регистрация других пакетов услуг org.springframework.web.servlet.mvc.Controller экземпляры на доске OSGi, которые MainDispatcherServlet слушает. MainDispatcherServlet предоставляет API для сопоставления URL-шаблонов с зарегистрированными контроллерами, которые, в свою очередь, используют SimpleUrlHandlerMapping идентифицировать обработчик для отдельных запросов. Пакеты услуг часто реализуют Javax GenericServletи завернуть в ServletWrappingController для регистрации.

Это очень хорошо работает. Теперь мне нужно следующее

Статические Ресурсы

Отправка статических ресурсов, таких как изображения и jsps (не знаю, считаются ли они статическими) в этих пакетах.

Поиск на SO кажется, что это может быть сделано с некоторыми <mvc:resources> магия в клиентском пакете, хотя я не совсем понимаю точный XML. Но если я правильно понимаю, запрос не будет проходить через MainDispatcherServlet, что является требованием.

Таким образом, подход, который я сейчас использую, заключается в использовании org.apache.catalina.servlets.DefaultServlet и заверните его в контроллер, как описано выше. Это хороший способ сделать это? Проблема здесь в том, что DefaultServlet нужен ServletContext и у меня нет того, чтобы дать это.

Есть ли простой способ создать ServletContext что я могу ввести в контроллер?

Переслать в статические ресурсы

Далее мне нужен еще один Servlet в том же клиентском пакете, чтобы иметь возможность forward на JSPS в комплекте с помощью RequestDispatcherДочерняя причина мне нужна полноценная ServletContext,

Таким образом, это работоспособно (даже если не элегантно)? И если да, то как мне создать ServletConteext? Если это не работает, какова альтернатива?

Все это довольно сложно. Хотя я не (не могу:)) просить о реализованном прототипе, я буду признателен за более краткую инструкцию, такую ​​как "ввести X в Y и обернуть его в Z, и все готово".

1 ответ

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

X-Web-Resource-Version: 1.0
X-Web-Resource: path/to/resources

Перейдите на эту страницу [1] и прокрутите вниз для получения дополнительной информации об этом. Конечно, вам необходимо развернуть пакет Amdatu "обработчик ресурсов" и его зависимости, которые можно найти в этом репозитории [2].

[1] http://amdatu.org/components/web.html

[2] http://repository.amdatu.org/snapshot/org.amdatu.web.resourcehandler/org.amdatu.web.resourcehandler-1.0.2.jar

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