Using websphere app server. Web.xml has the mappings:
<servlet>
<servlet-name>MyDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myconfig.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>JSPDispatcher</servlet-name>
<servlet-class>com.dispatcher.JSPDispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyDispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JSPDispatcher</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
Next, my context config has
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<bean id="contentNegotiatingViewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:order="1">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="defaultHandler" ref="defaultController" />
</bean>
Basically, I ma trying to send all requests to *.jsp to a custom error page. I could map *.jsp also to DispatcherServlet, but, in hindsight, the problem remains the same whether I give multiple mappings to Dispatcherservlet or map to seperate Servlets like above.
Whenever, my viewResolver receives a viewName, it suffixes it with .jsp and ends up in JSPDispatcher scope again, which, in turn, forwards to a controller generating a viewName again.
So, it becomes an endless cycle of Dispatcher-Controller-ViewResolver-- forwarding to Dispatcher-Controller- ViewResolver.....
Causing a StackOverflowError.
How can I solve this problem?