Я столкнулся с проблемой только в Websphere 8.5. У меня есть страница входа в систему, где после того, как пользователь вводит имя пользователя/пароль, вызов Ajax выполняется в authTest/j_security_check .oauthTest является корнем контекста приложения.Фильтр Websphere 8.5
На стороне сервера у меня есть 2 фильтра и несколько сервлетов.
<web-app>
<servlet>
<servlet-name>JSceurityCheck</servlet-name>
<servlet-class>provider.oauth.servlet.JSceurityCheck</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JSceurityCheck</servlet-name>
<url-pattern>/j_security_check</url-pattern>
</servlet-mapping>
<filter>
<display-name>OAuthFilter</display-name>
<filter-name>OAuthFilter</filter-name>
<filter-class>oauth.filter.OAuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OAuthFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter>
<display-name>DispatchFilter</display-name>
<filter-name>DispatchFilter</filter-name>
<filter-class>dispatcher.filter.DispatchFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DispatchFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
управления достигает OAuthFilter откуда (запрос, ответ) вызов chain.doFilter сделан. Позже управление достигает DispatchFilter, который также вызывает chain.doFilter (запрос, ответ).
Теперь элемент управления должен доходить до сервлета JSceurityCheck, но до того, как управление достигнет этого сервлета, сервер приложений websphere выбрасывает исключение.
Caused by: java.lang.IllegalArgumentException: Location cannot be null in javax.servlet.http.HttpServletResponse.sendRedirect(location)
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendRedirectWithStatusCode(WebAppDispatcherContext.java:539)
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendRedirect(WebAppDispatcherContext.java:527)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendRedirect(SRTServletResponse.java:1350)
at com.ibm.ws.security.web.FormLoginExtensionProcessor.formLogin(FormLoginExtensionProcessor.java:734)
at com.ibm.ws.security.web.FormLoginExtensionProcessor.formLogin(FormLoginExtensionProcessor.java:228)
at com.ibm.ws.security.web.FormLoginExtensionProcessor.handleRequest(FormLoginExtensionProcessor.java:206)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at com.teamcenter.lis.provider.dispatcher.filter.DispatchFilter.doFilter(DispatchFilter.java:178)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.teamcenter.lis.provider.oauth.filter.OAuthFilter.doFilter(OAuthFilter.java:144)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
Тот же самый код работает в JBOSS 7, Tomcat 7 и WebLogic Server 12. Только в WebSphere 8.5 она отбита. Если у кого есть какие-либо подсказки, пожалуйста, дайте мне знать.
Является ли ваш вызов Ajax отправленным с помощью POST? j_security_check ожидает POST-вызов. Также попробуйте создать фиктивную страницу входа и посмотреть, ведет ли она себя так, как вы ожидаете. – Gas