Вызов requestdispatcher.forward() to resource under "/WEB-INF " не работает в WebSphere


В одном из моих сервлетов я вызываю RequestDispatcher.forward() вызов статического ресурса где-то в папке WEB-INF:

request
    .getRequestDispatcher( "/WEB-INF/some/path/image.gif" )
        .forward( request, response );

Переход к этому сервлету прекрасно работает под Tomcat, Jetty et al., но не работает в WebSphere 7. Ошибка, которую я получаю (как в браузере, так и в журналах сервера), является

Error 403: SRVE0190E: File not found: /WEB-INF/some/path/image.gif

Изначально я предполагал, что WebSphere может нуждаться в какой-то определенной конфигурации, чтобы разрешить внутреннюю переадресацию к ресурсам под WEB-INF, но мне не удалось найти ничего полезного.

Есть идеи, почему может ли такое случиться?

Заранее спасибо!

2 3

2 ответа:

Оказывается, что для того, чтобы сделать WEB-INF доступным для сервлетов в WebSphere, необходимо задать свойству exposeWebInfOnDispatch значение true. Я получил этот ответ от WebSphere forum .


В консоли администрирования WebSphere 7,

  1. перейдите в раздел "серверы" = > "типы серверов" = > " серверы приложений WebSphere" слева
  2. выберите нужный сервер в списке в главной части страницы
  3. нажмите на "Настройки контейнера" = > "настройки веб-контейнера" => "Сеть контейнер "
  4. перейдите в раздел "пользовательские свойства" справа
  5. Добавить новое свойство:

    • имя: exposeWebInfOnDispatch
    • значение: true

Вы получаете HTTP 403, что означает запрещено. Попробуйте переместить изображение.gif из WEB-INF. Это может сработать