Будет ли работать request.getDispatcher ("/ newurl"). Forward () при использовании apache, подключенного к tomcat через ajp? - PullRequest
0 голосов
/ 13 января 2012

Я пытался изменить поведение стороннего приложения, с которым я работаю, написав фильтр сервлета для пересылки запроса на определенный URL-адрес на основе определенных условий.

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

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

Итак, мой вопрос: был ли переход foward из фильтра сервлетов в apache или он обрабатывается форвардом специально для tomcat, и поэтому он не будет работать?

1 Ответ

1 голос
/ 13 января 2012

сделал ли foward из фильтра сервлетов значение apache

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

...