web-dev-qa-db-fra.com

Spring 3.0: impossible de localiser Spring NamespaceHandler pour l'espace de noms de schéma XML

Ma configuration est assez simple: j'ai un front-web, le back-end est à ressort.

J'utilise AOP pour ajouter une couche de sécurité sur mes services RPC.

Tout va bien, à part le fait que l'application Web a échoué au lancement:

 [Java] SEVERE: L'initialisation du contexte a échoué 
 [Java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Problème de configuration: impossible de localiser Spring NamespaceHandler pour l'espace de noms de schéma XML [http://www.springframework.org/schema/aop]
 [Java] Ressource en infraction: ressource ServletContext [/WEB-INF/gwthandler-servlet.xml]

Voici l'extrait de mon fichier de configuration xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    <aop:config>
        <aop:aspect id="security" ref="securityAspect" >
            <aop:pointcut id="securedServices" expression="@annotation(com.fb.boog.common.aspects.Secured)"/>
            <aop:before method="checkSecurity" pointcut-ref="securedServices"/>
        </aop:aspect>
    </aop:config>

J'ai relu les internets que c'était peut-être ma classe qui était au cœur du problème. Douteux, car voici mon répertoire WEB-INF/lib:

./WEB-INF/lib
./WEB-INF/lib/aopalliance-alpha1.jar
./WEB-INF/lib/aspectj-1.6.6.jar
./WEB-INF/lib/commons-collections.jar
./WEB-INF/lib/commons-logging.jar
./WEB-INF/lib/ehcache-core-1.7.0.jar
./WEB-INF/lib/ejb3-persistence.jar
./WEB-INF/lib/hibernate
./WEB-INF/lib/hibernate/antlr.jar
./WEB-INF/lib/hibernate/asm.jar
./WEB-INF/lib/hibernate/bsh-2.0b1.jar
./WEB-INF/lib/hibernate/cglib.jar
./WEB-INF/lib/hibernate/dom4j.jar
./WEB-INF/lib/hibernate/freemarker.jar
./WEB-INF/lib/hibernate/hibernate-annotations.jar
./WEB-INF/lib/hibernate/hibernate-shards.jar
./WEB-INF/lib/hibernate/hibernate-tools.jar
./WEB-INF/lib/hibernate/hibernate.jar
./WEB-INF/lib/hibernate/jtidy-r8-20060801.jar
./WEB-INF/lib/jabsorb
./WEB-INF/lib/jabsorb/jabsorb-1.3.1.jar
./WEB-INF/lib/jta.jar
./WEB-INF/lib/jyaml-1.3.jar
./WEB-INF/lib/postgresql-8.4-701.jdbc4.jar
./WEB-INF/lib/sjsxp.jar
./WEB-INF/lib/spring
./WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.asm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.aspects-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.beans-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context.support-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.core-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.expression-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument.Tomcat-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jdbc-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jms-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.orm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.oxm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.test-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.transaction-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.portlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.servlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.struts-3.0.0.RELEASE.jar
./WEB-INF/lib/testng-5.11-jdk15.jar
./WEB-INF/web.xml
38
Nick Hristov

Avez-vous essayé de mettre tous vos pots directement dans le répertoire WEB-INF/lib au lieu de sous-répertoires de celui-ci?

Non WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar, juste WEB-INF/lib/org.springframework.aop-3.0.0.RELEASE.jar

Idem avec le reste des pots.

9
Peter Lynch

Cette erreur est survenue lors de l'utilisation de maven-shade-plugin. La solution est la suivante:

META-INF/spring.schemas

et

META-INF/spring.handlers

transformateurs dans le maven-shade-plugin lors de la ...

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.handlers</resource>
                        </transformer>
                        <transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.schemas</resource>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>

(Crédits: Idée pour éviter que spring.handlers/spring.schemas soient écrasés lors de la fusion de plusieurs dépendances de ressort dans un seul pot )

48
xgMz

http://maven.Apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html

J'ai rencontré un problème similaire en utilisant le plugin maven-shade-. J'ai trouvé la solution à mes problèmes dans la page d'exemple ci-dessus.

16
Kevin

Quel IDE (le cas échéant) utilisez-vous? Est-ce que cela se produit lorsque vous travaillez dans un IDE ou uniquement en déploiement? Si c'est un déploiement, c'est peut-être parce que quel que soit le mécanisme de déploiement que vous utilisez - maven-Assembly, créer un seul JAR avec dépendances est un coupable connu - réduit tous vos JAR dans un seul répertoire et avec le schéma et le gestionnaire Spring. les fichiers se écrasent.

12
delfuego

J'ai rencontré une erreur similaire, mais en faisant référence à Spring Webflow dans un projet Roo récemment créé. La solution pour moi s’est avérée être (Projet)/clic droit/Maven/Activer les dépendances Maven (suivi de quelques redémarrages et republication sur Tomcat). 

Il est apparu que STS ou m2Eclipse ne parvenait pas à insérer tous les fichiers jar de flux Web spring dans le répertoire lib de l'application Web. Je ne sais pas pourquoi. Mais permettre la gestion de la dépendance Maven, puis la reconstruction semblait résoudre le problème. les fichiers jar Webflow sont finalement publiés et peuvent donc trouver les références d’espace de nom de schéma.

J'ai étudié la question en explorant le répertoire Tomcat dans lequel l'application Web avait été publiée, en cliquant sur WEB-INF/lib/pendant son exécution et en remarquant qu'il manquait des fichiers jar Webflow.

1
skywind

Cette astuce a également fonctionné pour moi: dans Eclipse, cliquez avec le bouton droit de la souris sur le projet, puis sur Maven> Mettre à jour les dépendances.

1
javasun

Assurez-vous d'avoir résolu toutes les dépendances

Je rencontre ce problème lors de ma première tentative d'AOP, à la suite d'un tutoriel de printemps… .. Mon problème était de ne pas avoir spring-aop.jar dans mon classpath. Le tutoriel énumère toutes les autres dépendances que je devais ajouter, à savoir:

  • aspectjrt.jar
  • aspectjweaver.jar
  • aspectj.jar
  • aopalliance.jar

Mais celui manquait. Juste un autre problème qui peut contribuer à ce symptôme dans la question initiale.

J'utilise Eclipse (néon), Java SE 8, beans 3.0, Spring AOP 3.0, Spring 4.3.4. Le problème apparaissait dans la vue Java - pas dans JEE-- et lors de la tentative d'exécution de l'application avec le menu du bouton droit -> Exécuter en tant que -> Application Java.

0
manuelvigarcia

Si vous utilisez mvn, vérifiez que vous avez la bonne portée (si celle-ci est définie) dans votre pom.xml. Une fois, je l'avais mal réglé sur test mais j'en avais besoin pour runtime .

0
panksdmz

Au cas où quelqu'un rencontrerait ce problème, je viens d'utiliser Eclipse; exécuter le projet via l'action du clic droit. Cette erreur s'est produite dans la vue J2EE, mais ne s'est PAS produite dans la vue Java. Pas sûr - supposer quelque chose avec l'ajout de bibliothèques dans le bon répertoire 'lib'. 

J'utilise également un projet Maven, permettant à m2Eclipse de gérer les dépendances.

0
wuntee

J'ai le même problème avec le printemps 3.0.2 et le printemps-haricots-3.0.xsd.

Ma solution:

Créez un fichier META-INF/spring.schemas dans le dossier source et copiez toutes les définitions nécessaires. Créez des spring.handlers aussi.

Je pense que la classe PluggableSchemaResolver ne fonctionne pas correctement.

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/xml/PluggableSchemaResolver.html

du javadoc:

"Par défaut, cette classe recherchera les fichiers de mappage dans le chemin d'accès aux classes en utilisant le modèle: META-INF/spring.schemas permettant à plusieurs fichiers d'exister simultanément dans le chemin d'accès aux classes."

mais dans mon cas, cette classe n'a lu que les premiers spring.schémas trouvés.

Grettings . Pacovr 

0