2012-01-13 2 views
0

Я пытался изменить поведение стороннего приложения, с которым я работаю, написав фильтр сервлета для пересылки запроса на определенный URL на основе определенных условий.Будет ли request.getDispatcher ("/ newurl"). Forward() работать при использовании apache, подключенного к tomcat через ajp?

Я изначально пытался с request.getDispatcher(url).forward();, но всегда был представлен 404 страница с указанием URL не найден. Я обошел это, используя вместо этого request.sendRedirect, но только сейчас я понимаю, что экран 404 был тем, что я обычно вижу на сервере tomcat.

Это заставило меня задуматься о конфигурации в этом случае. URL-адрес, который я пытаюсь переслать, - это cgi-скрипт. У нас есть apache как интерфейс, подключенный через разъемы ajp, а apache настроен на выполнение скриптов cgi.

Так что я задал вопрос, сделал ли птица из фильтра сервлетов когда-либо до апача или прямо обработал tomcat, и именно поэтому он не сработает?

ответ

1

сделал Foward из сервлета фильтра когда-либо сделать его APACHE

No. RequestDispatcher.forward является внутренней операцией в веб-приложение сервера приложений и служит для передачи управления потоком от одного внутреннего компонента (например, сервлет) к другому (например, JSP). Вы не можете перенаправлять ресурсы за пределы сервера приложений, например, свой сценарий CGI. Для этого вам придется использовать перенаправление.

+0

Спасибо. Это в значительной степени то, что я подозревал, но мне потребовалось около 20 минут, чтобы понять, что происходит. Сначала я подумал, что это связано с кодировкой URL, поэтому я работал над исправлением проблемы, которой не было. перенаправление работает нормально, так что все хорошо, что хорошо кончается. –

 Смежные вопросы

  • Нет связанных вопросов^_^