2016-08-03 56 views
0

In meinem Projekt verwende ich Spring Security und Jetty. Jetzt benutze ich Jetty 7 und ich möchte zu Jetty 9 migrieren (nur um auf dem neuesten Stand zu sein).Ich erhalte einen Fehler (springSecurityFilterChain erscheint zweimal) Spring Security migration Jetty 7 zu 9

Mit Jetty 7, mein Projekt perfekt laufen, aber wenn ich bis 9 migrieren Ich erhalte eine Fehlermeldung, wenn es beginnt:

Verursacht durch: java.lang.IllegalStateException: Filter Registrierung für ‚springSecurityFilterChain‘ Duplizieren. Stellen Sie sicher, dass der Filter nur einmal konfiguriert ist.

Ich benutze Annotation und dies ist die Konfiguration:

Maven:

<properties> 
    <!-- NOT LATEST VERSION --> 
    <spring-data-jpa.version>1.9.4.RELEASE</spring-data-jpa.version> 
    <hibernate.version>5.1.0.Final</hibernate.version> 

    <!-- LATEST VERSION --> 
    <springframework.version>4.3.2.RELEASE</springframework.version> 
    <spring-security.version>4.1.1.RELEASE</spring-security.version> 
    <aspectj.version>1.8.9</aspectj.version> 
    <hibernate-validator.version>5.2.4.Final</hibernate-validator.version> 
    <cglib.version>3.2.4</cglib.version> 

    <!-- No compatibility needed --> 
    <mysql.version>6.0.3</mysql.version> 
    <log4j.version>1.2.17</log4j.version> 
    <slf4j.version>1.7.21</slf4j.version> 
    <junit.version>4.12</junit.version> 
    <h2.version>1.4.192</h2.version> 
    <log4j.version>1.2.17</log4j.version> 
    <javax-servlet.version>3.1.0</javax-servlet.version> 
    <jsp-api.version>2.3.1</jsp-api.version> 
    <jstl.version>1.2</jstl.version> 
    <taglibs.version>1.1.2</taglibs.version> 
</properties> 

Ich habe diese Klassen:

/config/JpaConfiguration.java 
/config/LoggingConfiguration.java 
/config/MessageSecurityWebApplicationInitializer.java 
/config/SecurityAuthenticationFailureHandler.java 
/config/SecurityAuthenticationSuccessHandler.java 
/config/SecurityConfig.java 
/config/SecurityWebApplicationInitializer.java 
/config/WebConfiguration.java 

Und die web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <display-name>Archetype Created Web Application</display-name> 

    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </context-param> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      com.jle.athleges.config.LoggingConfiguration 
      com.jle.athleges.config.JpaConfiguration 
      com.jle.athleges.config.WebConfiguration 
      com.jle.athleges.config.SecurityConfig 
     </param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/</url-pattern> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

    <!-- START: 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> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 
    <context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>classpath:log4j.xml</param-value> 
    </context-param> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

</web-app> 

Haben Sie eine Idee?

+0

Vielen Dank. Es funktioniert. Ich wechselte zu AbstractAnnotationConfigDispatcherServletInitializer und implementiert Methoden und entfernte die Konfiguration in web.xml. Großartig! –

Antwort

0

Sie haben zwei Definitionen von Bohnen springSecurityFilterChain:

  1. Mit SecurityWebApplicationInitializer.java (seit Servlets 3.0+):

    Siehe Spring Security Reference

  2. Mit web.xml:

    <filter> 
        <filter-name>springSecurityFilterChain</filter-name> 
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    

Entfernen Sie eine von zwei Definitionen.