Здравствуйте, Аноним, Вы писали:
А>Если ServletRequestWrapper есть паттерн декоратор и он реализует интерфейс ServletRequest, почему я получаю ClassCastException когда делаю так:
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>Если ServletRequestWrapper есть паттерн декоратор и он реализует интерфейс ServletRequest, почему я получаю ClassCastException когда делаю так:
B>Stacktrace в студию!
ему бы HttpServletRequestWrapper. Что то мне подсказывает что у него на "/second" не просто сервлет висит а javax.servlet.http.HttpServlet
Здравствуйте, Lucker, Вы писали:
L>ему бы HttpServletRequestWrapper. Что то мне подсказывает что у него на "/second" не просто сервлет висит а javax.servlet.http.HttpServlet
Тоже так подумал, но мне показалось GenericServlet не должен быть на него завязан. Разве нет?
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Lucker, Вы писали:
L>>ему бы HttpServletRequestWrapper. Что то мне подсказывает что у него на "/second" не просто сервлет висит а javax.servlet.http.HttpServlet B>Тоже так подумал, но мне показалось GenericServlet не должен быть на него завязан. Разве нет?
да! Но GenericServlet.service(ServletRequest req, ServletResponse res) та абстрактный, в нем вообще никакой обработки не происходит. А вот то что весит на "/second" это с 99.99999% вероятности какой-нить HttpServlet.
Здравствуйте, Blazkowicz, Вы писали: B>Stacktrace в студию!
java.lang.ClassCastException: javax.servlet.ServletRequestWrapper
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:616)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:522)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
at Controller.service(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Кстати на "/second" тоже GenericServlet.
import java.io.*;
import javax.servlet.*;
public class Second extends GenericServlet{
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{
PrintWriter out = res.getWriter();
out.println("**** HI, EVERYONE !!! ***");
}
}
Обнаружил, что контейнер(Tomcat 5) передает в GenericServlet.service(ServletRequest req, ServletResponse res) объекты HttpServletRequest и HttpServletResponse, поэтому все и работало без Servlet...Wrapper'ов. Получается, что механизм передачи управления в другой сервлет актуален только для протокола Http, т.е. тогда когда в service(...) передаются объекты реализующие интерфейсы HttpServletRequest и HttpServletResponse.
Здравствуйте, duss, Вы писали:
D>Получается, что механизм передачи управления в другой сервлет актуален только для протокола Http, т.е. тогда когда в service(...) передаются объекты реализующие интерфейсы HttpServletRequest и HttpServletResponse.
Сервлеты вообще актуальны только для HTTP.
Re[6]: ServletRequestWrapper в RequestDispatcher
От:
Аноним
Дата:
12.06.07 21:52
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Сервлеты вообще актуальны только для HTTP.
Ну вот, еще один. Читайте про FTPServlet & SIPServlet в порядке расширения кругозора.
Здравствуйте, andrew, Вы писали:
B>>Сервлеты вообще актуальны только для HTTP. HAO>Ну вот, еще один. Читайте про FTPServlet & SIPServlet в порядке расширения кругозора.
Ну, давай ещё SMTP приплетем для полного дрысту, остряк, блин. Примеры корпоративных приложений, которые этим пользуются. Гугл выдает в основном ссылки на *.edu.