2013-12-04 3 views
2

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

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

Навигационных к этому сервлету отлично работает под Tomcat, Jetty и др., но не работает в WebSphere 7. Я получаю ошибку (как в браузере, и в журналах сервера)

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

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

Любые идеи, почему это может случиться?

Заранее благодарен!

+1

Проверьте развертывание. Действительно ли этот файл существует? –

+0

@SotiriosDelimanolis Да. Эта же WAR работает под другими серверами ... – Anton

+0

Возможно переключение на ресурс внутри WEB-INF. Я думаю, что это спецификация Java EE, потому что это внутренний вызов. 403 означает, что ресурс существует, но он запрещен, недоступен. Что-то не так с WebSphere. Вы пытались развернуть папку приложения? NOT .WAR. – Loc

ответ

4

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


В WebSphere 7 консоли управления

  1. Перейти к "Серверы" => "Типы сервера" => "WebSphere серверы приложений" на левом
  2. Выберите подходящий сервер в списке на основной части страницы
  3. Нажмите «Настройки контейнера» => «Настройки веб-контейнера» => «Веб-адрес контейнер«
  4. Перейдите в «Пользовательские свойства», на правой
  5. Добавить новое свойство:

    • Имя: exposeWebInfOnDispatch
    • Значение: true
+0

Спасибо за обновление здесь, что было обнаружено. Рад, что форум подготовил решение. – dbreaux

+0

Где вы установили этот параметр? Это что-то, что можно настроить в дескрипторе развертывания? – Cypher

+0

@Cypher Просто добавил подробные шаги к ответу. Не уверен, что вы можете это сделать в дескрипторе развертывания. Я никоим образом не специалист по WebSphere, хотя ... – Anton

0

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

+0

Я предполагаю, что это будет, но дело не в этом. Я не хочу, чтобы файл был напрямую доступен из сети. – Anton

+0

возможно, вы могли бы прочитать это как ресурс, а затем написать контент обратно в ответ с правильным типом http-содержимого, а не пытаться выполнить переадресацию запроса. –

+0

Возможно, и я могу подумать и о других обходных решениях. Тем не менее, я пытаюсь понять, что здесь происходит и почему. – Anton