2011-10-10 28 views
6

Puede alguien ayudarme a resolver mi error Tomcat correr, me sale el siguiente error cuando funciono Tomcat:GRAVES: Excepción springSecurityFilterChain ... ClassCastException ... DelegatingFilterProxy no se puede convertir

SEVERE: Exception starting filter springSecurityFilterChain 
java.lang.ClassCastException: org.springframework.web.filter.DelegatingFilterProxy cannot be cast to javax.servlet.Filter 
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275) 
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.startup.Embedded.start(Embedded.java:825) 
    at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:533) 
    at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:239) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 

Respuesta

3

pude solucionar este problema la eliminación de servlet-api.jar de mi montaje de despliegue (en Eclipse)

mi-web-proyecto-> propiedades -> Asamblea despliegue

y retirarlo. Otros afirman que en los proyectos maven el alcance de la dependencia servlet-api debe establecerse en 'proporcionado'

9

Una de sus dependencias incluye una servlet-api en su archivo war que causa ese comportamiento. Utilizando mvn dependency: tree, puedes averiguar cuál de tus dependencias es esa. Después de que es necesario excluir el servlet-api de la siguiente manera:

<dependency> 
    <groupId>[VALUE]</groupId> 
    <artifactId>[VALUE]</artifactId> 
    <version>[VALUE]</version> 
    <exclusions> 
    <exclusion> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

que tiene que hacer esto para otra de servlet-api (por ejemplo org.mortbay.jetty: servlet-api, ..) así.

1

Obtuve un problema similar cuando agregué la dependencia para CXF. Intenté la forma recomendada más arriba de excluir javax.servlet de esa dependencia, pero no funcionó, pero la opción de agregar siempre lo resolvió. Podría ser un caso diferente para usted, pero vale la pena intentarlo.

<dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-bundle-jaxrs</artifactId> 
     <version>2.2.9</version> 
     <scope>provided</scope> 
    </dependency> 

Si contesté a tu pregunta, márcalo. ;)

0

El problema similar se resolvió al excluir a geronimo.

 <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http-jetty</artifactId> 
     <version>3.0.3</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-servlet_2.5_spec</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-servlet_3.0_spec</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

determinig cuales contenían archivos jar los UAS de error detectados mediante la exploración de cada archivo JAR en la carpeta WEB-INF/lib para las clases que contenía. Es decir.

jar tvf <jar-file> 
0

probablemente en web.xml se configuran

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

pero es filtro. así que cambie el servlet como filtro.

Cuestiones relacionadas