HTTP Status 500 - Filter execution threw an exception - doFilter and invokeDelegate repeated

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

I'm using Spring-MVC (4.2.5) and Spring-Security (4.1.3) to develop a web application. I begin to have problems when I tried to incorporate the latter in my mvc project.

Currently, after several attempts, I get this error in my tomee server at localhost:8080/BetEx/

HTTP Status 500 - Filter execution threw an exception  type Exception report  message Filter execution threw an exception  description The server encountered an internal error that prevented it from fulfilling this request.  exception  javax.servlet.ServletException: Filter execution threw an exception root cause  java.lang.StackOverflowError     org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:246)     org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) [repeated many, many times] 

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://java.sun.com/xml/ns/javaee"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"     id="WebApp_ID" version="3.0">     <display-name>BetEx</display-name>     <welcome-file-list>         <welcome-file>index.html</welcome-file>     </welcome-file-list>      <!-- Spring MVC -->     <servlet>         <servlet-name>betex-controller</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>         <load-on-startup>1</load-on-startup>     </servlet>     <servlet-mapping>         <servlet-name>betex-controller</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>      <!-- Spring Security Configuration File -->     <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>/WEB-INF/spring/spring-security.xml</param-value>     </context-param>         <context-param>         <param-name>contextClass</param-name>         <param-value>          org.springframework.web.context.support.AnnotationConfigWebApplicationContext       </param-value>     </context-param>      <!-- Spring Security -->     <filter>         <filter-name>springSecurityFilterChain</filter-name>         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>     </filter>     <filter-mapping>         <filter-name>springSecurityFilterChain</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping> </web-app> 

betex-controller-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:context="http://www.springframework.org/schema/context"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"     xsi:schemaLocation="    http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd    http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-4.3.xsd    http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">      <context:component-scan base-package="controller" />     <context:component-scan base-package="service" />      <mvc:annotation-driven />      <mvc:resources mapping="/resources/**" location="/resources/" />      <bean id="templateResolver"         class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">         <property name="prefix" value="/WEB-INF/html/" />         <property name="suffix" value=".html" />         <property name="templateMode" value="HTML5" />     </bean>      <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">         <property name="templateResolver" ref="templateResolver" />     </bean>      <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">         <property name="templateEngine" ref="templateEngine" />         <property name="order" value="1" />     </bean>      <bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy" />      </beans> 

spring-security.xml

<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security"     xmlns:security="http://www.springframework.org/schema/security"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"     xsi:schemaLocation="       http://www.springframework.org/schema/security        http://www.springframework.org/schema/security/spring-security-4.1.xsd       http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">      <http pattern="/resources/**" security="none" />      <http use-expressions="true">         <intercept-url pattern="/index*" access="isAnonymous()" />         <intercept-url pattern="/**" access="isAuthenticated()" />          <form-login login-page='/index.html' default-target-url="/home.html"             authentication-failure-url="/index.html?error=true" />          <logout logout-success-url="/index.html" />      </http>     <authentication-manager>         <authentication-provider user-service-ref="customUserDetailsService">             <password-encoder hash="bcrypt" />         </authentication-provider>     </authentication-manager> </beans:beans> 

I think this error means that the framework fails to load DelegatingFilterProxy bean and to delegate it to the application context.

Where am I wrong? Thanks in advance

EDIT:

After I removed the following line from my betex-controller-servlet.xml, as suggested by dur

<bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy" /> 

I get the following error trying to open my webapp's root:

GRAVE: Servlet.service() for servlet [betex-controller] in context with path [/BetEx] threw exception org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698)     at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175)     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1060)     at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326)     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:255)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)     at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)     at java.lang.Thread.run(Thread.java:745) 

回答1:

After double-checking all the configuration file, after reading the documentation, I came to the conclusion that there was nothing wrong. I simply solved downgrading from version 4.1.3 to 4.0.3



回答2:

please change the url pattern in web xml. That should work.

<filter-mapping>         <filter-name>springSecurityFilterChain</filter-name>         <url-pattern>/user/*</url-pattern>     </filter-mapping> 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!