Spring 3.0: no se puede encontrar Spring NamespaceHandler para el espacio de nombres de esquema XML [http://www.springframework.org/schema/security]

179

¿Alguna idea de cuál podría ser la causa de esto?

No se puede ubicar Spring NamespaceHandler para el espacio de nombres de esquema XML [ http://www.springframework.org/schema/security]

org.springframework.web.context.ContextLoader initWebApplicationContext: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]

Esta es mi applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-3.0.xsd">
...
</beans:beans>

En mi pom.xml tengo:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>      
    <version>3.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-openid</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Taylor Leese
fuente
Golpeé esto cuando seguí el tutorial de Spring pizzashop
Rob Grant
¿Es este tu completo pom.xml? Porque entonces es muy probable que te falte un frasco.
Marco Schoolenberg

Respuestas:

286

Necesitaba agregar una dependencia adicional de Maven:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
Taylor Leese
fuente
3
+1 Por resolver mi problema. Se puede encontrar más información sobre la reestructuración de la base de código de spring security 3.0 en: blog.springsource.com/2009/06/03/spring-security-300m1-released
Rydell
Buen enlace También podría haberlo usado hace unos meses.
Taylor Leese,
12
Tocino salvado por SO una vez más!
Andrew Swan el
Una solución similar es válida cuando se intenta usar solo el spring-security-casfrasco.
Ryan Ransford
Recomiendo este enlace para aquellos con Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]problemas. Tuve un problema similar en el pasado, ¡y eso me ayudó mucho!
Cotta
18

Recibí el mismo mensaje de error al intentar implementar la aplicación. En Spring, la configuración de seguridad xml puede ser diferente de applicationContext.xml, generalmente applicationContext-security.xml dentro de la carpeta WEB-INF. Los cambios a aplicar son para web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
        /WEB-INF/applicationContext-security.xml
    </param-value>
</context-param>

Y la applicationContext.xml se vería así:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http auto-config='true'>
        <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <intercept-url pattern="/**" access="ROLE_USER" />
        <form-login login-page='login.jsp'/>
    </http>

</beans:beans>

Incluso después de realizar estos cambios, existirá el error de espacio de nombres. Para deshacerse de esto, agregue los siguientes archivos jar a WEB-INF / lib y luego a la biblioteca:

  • spring-security-acl-3.1.0.M2.jar
  • spring-security-config-3.1.0.M2.jar
  • spring-security-core-3.1.0.M2.jar
  • spring-security-taglibs-3.1.0.M2.jar
  • spring-security-web-3.1.0.M2.jar
James Jithin
fuente
Tienes que usar Maven para que Spring comience. Y cuando de mala gana haces exactamente eso, ¡todavía no funciona! Alguien, en algún lugar se está riendo a carcajadas ... Esta respuesta ayudó a reducir un poco mi frustración.
Arne Evertsson
12

Luché con esto por un tiempo y ninguna de estas respuestas me ayudó. Gracias al comentario del usuario64141 me di cuenta de que había un problema con los spring.handlersarchivos.

Estoy usando el complemento Shade para Maven para generar un tarro gordo, y todos los archivos spring.handlers(y spring.schemas) fueron sobrescritos por cada dependencia de Spring.

El sitio de Maven cubre este problema exacto y cómo resolverlo agregando los archivos juntos:

http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer

Patrick Herrera
fuente
8

Usé spring-security-config jar, resolvió el problema por mí

abhiram
fuente
6

La solución es definitivamente "spring-security-config" que no está en su WEB-INF / lib.

Para mi proyecto en Eclipse usando Maven, resultó que no todas las dependencias de Maven se copiaban a WEB-INF / lib. Al mirar Proyecto -> Propiedades -> Ensamblaje de implementación, solo se copiaron algunos de los frascos.

Para solucionar esto, hice clic en "Agregar", luego en "Java Build Path Entires" y finalmente en "Maven Dependencies".

He estado buscando SO y la web durante la última hora buscando esto, así que espero que esto ayude a alguien más.

Peter Sankauskas
fuente
3

Existe una buena lista de dependencias de Maven en: Spring Site Los principales artefactos necesarios son:

  1. núcleo de seguridad de resorte
  2. Spring-security-web
  3. spring-security-config
George Papatheodorou
fuente
3

@James Jithin: esta excepción también puede aparecer cuando tiene dos versiones diferentes de beans y un esquema de seguridad en xsi: schemaLocation. Es el caso en el fragmento que ha pegado:

xsi:schemaLocation="http://www.springframework.org/schema/beans   
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
 http://www.springframework.org/schema/security  
 http://www.springframework.org/schema/security/spring-security-3.1.xsd"

En mi caso, cambiarlos a ambos 3.1 resolvió el problema

ForestierSimon
fuente
Acabo de lograr que funcione: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd en mi caso, me faltaba el jar 'spring-security-config'.
Ithar
De acuerdo con este comentario. Tuve mi problema debido a esta causa.
DolphinJava
2

Lo que hice:

      <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>

y

xsi:schemaLocation="
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

funciona perfectamente Más Baeldung

Xelian
fuente
0

Si ya tiene todas las dependencias en su pom, intente:
1. Eliminar todos los archivos jar descargados de su carpeta de repositorio maven para 'org-> springframework'
2. Haga una compilación limpia maven.

arviarya
fuente
0

Me he encontrado con el problema muy similar hoy. Por alguna razón IntelliJ IDEA, no he incluido archivos jar de Spring Security durante la implementación de la aplicación. Creo que debería estar de acuerdo con la mayoría de los carteles aquí.

Shapiy
fuente
0

Recibí este error al implementar en Virgo. La solución fue agregar esto a mis importaciones de paquetes:

org.springframework.transaction.config;version="[3.1,3.2)",

Noté que en los frascos de Spring bajo META-INF hay una sección spring.schemas y spring.handlers, y la clase a la que apuntan (en este caso org.springframework.transaction.config.TxNamespaceHandler) debe importarse.

usuario64141
fuente
0

Tuve el mismo problema hace unos minutos, me faltaba la biblioteca 'Maven depencendies' en mi Asamblea de implementación. Lo agregué a través de la sección 'Conjunto de implementación web' en Eclipse

GreyStar
fuente
0

Si agregar dependencias no ha resuelto su problema, cree el archivo WAR nuevamente. En mi caso, utilicé un archivo WAR obsoleto sin frascos de seguridad web y de seguridad

David
fuente
0

Agregue la siguiente dependencia en su archivo pom.xml y si está utilizando IntelliJ, agregue los mismos archivos jar a la carpeta WEB-INF-> lib .... la ruta es Estructura del proyecto -> Atrifactos -> Seleccione jar del panel Elementos disponibles y doble hacer clic. Se agregará a la carpeta respectiva

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Sia
fuente