Ще работи ли request.getDispatcher(/newurl).forward() при използване на apache, свързан с tomcat чрез ajp?

Опитвах се да променя поведението на приложение на трета страна, с което работя, като написах сервлет филтър за препращане на заявка към определен URL въз основа на определени условия.

Първоначално опитах с request.getDispatcher(url).forward();, но винаги ми се показваше страница 404, показваща, че този URL адрес не може да бъде намерен. Заобиколих това, като използвах request.sendRedirect вместо това, но едва сега разбирам, че екранът 404 е това, което обикновено виждам в сървър от tomcat.

Това ме накара да се замисля за конфигурацията в този случай. URL адресът, към който се опитвам да препратя, е cgi скрипт. Имаме apache като преден край, свързан чрез ajp конектори и apache е конфигуриран да изпълнява cgi скриптове.

Така че въпросът ми е дали пренасочването от сервлет филтъра някога е стигнало до apache или пренасочването се обработва специално от tomcat и затова няма да работи?


person Mr Moose    schedule 13.01.2012    source източник


Отговори (1)


дали препратката от сервлет филтъра някога е стигнала до apache

RequestDispatcher.forward е вътрешна операция в уебприложението на сървъра за приложения, използвана за прехвърляне на контрол на потока от един вътрешен компонент (напр. сървлет) към друг (напр. JSP). Не можете да пренасочвате към ресурси извън сървъра за приложения, като вашия CGI скрипт. Ще трябва да използвате пренасочване за това.

person skaffman    schedule 13.01.2012
comment
Благодаря. До голяма степен това подозирах, но ми отне около 20 минути, за да разбера какво се случва. Мислех, че първо е свързано с кодирането на URL адреса, така че работех върху отстраняването на проблем, който не съществуваше. пренасочването работи добре, така че всичко е добре, което завършва добре. - person Mr Moose; 13.01.2012