Impossible de localiser Spring NamespaceHandler pour l’espace de noms de schéma XML

Je développe ma première application en spring security. Mon fichier applicationContext-security.xml ressemble à ceci:

                     

et le fichier Web.xml est:

   Spring Security OpenID Demo Application  contextConfigLocation  /WEB-INF/applicationContext-security.xml    log4jConfigLocation /WEB-INF/classes/log4j.properties   webAppRootKey openid.root   springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*   org.springframework.web.context.ContextLoaderListener   org.springframework.web.util.Log4jConfigListener   faces/index.xhtml   

Clean and Build de l’application est un succès, mais lorsque j’essaie de déployer l’application, jetty 7 me donne l’erreur suivante:

SEVERE: l’initialisation du contexte a échoué
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Problème de configuration: impossible de localiser Spring NamespaceHandler pour l’espace de noms du schéma XML [ http://www.springframework.org/schema/security]
Ressource fautive: ressource ServletContext [/WEB-INF/applicationContext-security.xml]
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error (FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error (ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error (ReaderContext.java:80)

Tout essayé mais ne peut pas résoudre cette erreur. Toute aide serait appréciée.

EDIT J’ai essayé la version 3.0.2 de Spring-Security et j’ai eu ceci:

L’initialisation du contexte a échoué
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: la ligne 13 du document XML de la ressource ServletContext [/WEB-INF/applicationContext-security.xml] n’est pas valide;
l’exception nestede est org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 11; cvc-complex-type.2.4.c: Le caractère générique correspondant est ssortingct, mais aucune déclaration ne peut être trouvée pour l’élément ‘http’. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:396)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:334

Vous avez besoin d’un spring-security-config.jar sur votre spring-security-config.jar de spring-security-config.jar .

L’exception signifie que le fichier de security: xml ne peut pas être géré par des “parsingurs” de spring. Ce sont des implémentations de l’interface NamespaceHandler , vous avez donc besoin d’un gestionnaire qui sait comment traiter balises :. C'est le SecurityNamespaceHandler situé dans spring-security-config

J’ai eu le même problème. La seule chose qui le résolut était de fusionner le contenu de META-INF / spring.handler et META-INF / spring.schemas de chaque fichier jar de spring dans les mêmes noms de fichiers dans le cadre de mon projet META-INF.

Ce deux fils expliquent mieux:

  • Maven Assembly Plugin et Spring gestionnaires d’espace de noms
  • Thread: impossible de localiser Spring NamespaceHandler pour l’espace de noms de schéma XML

Dans mon cas, cela était dû à des entrées de manifeste personnalisées ajoutées par le plug-in maven-jar.

  org.apache.maven.plugins maven-jar-plugin 2.6   true  true   ${buildNumber} ${timestamp}     

La suppression des entrées suivantes a résolu le problème

 true  true