Spring 3.0: невозможно найти Spring NamespaceHandler для пространства имен схемы XML - PullRequest
38 голосов
/ 21 декабря 2009

Моя настройка довольно проста: у меня есть веб-интерфейс, а фон - пружинный.

Я использую AOP для добавления уровня безопасности в мои службы rpc.

Это все хорошо, за исключением того факта, что веб-приложение прерывается при запуске:

  [java] SEVERE: Context initialization failed
     [java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/aop]
     [java] Offending resource: ServletContext resource [/WEB-INF/gwthandler-servlet.xml]

Вот фрагмент из моего файла конфигурации 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>

Я прочитал в интернете, что это может быть моя загрузка классов суть проблемы. Сомнительно, так как вот мой каталог 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

Ответы [ 11 ]

48 голосов
/ 16 августа 2012

Обнаружена эта ошибка при использовании maven-shade-plugin, решение включало в себя:

META-INF / spring.schemas

и

META-INF / spring.handlers

трансформаторов в maven-shade-plugin при сборке ...

    <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>

(Авторы: Идея избежать перезаписи spring.handlers / spring.schemas при объединении нескольких зависимостей пружин в один jar )

16 голосов
/ 17 мая 2010

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

Я столкнулся с подобной проблемой, используя maven-shade-plugin. Я нашел решение своих проблем на странице их примера выше.

12 голосов
/ 21 декабря 2009

Какую IDE (если есть) вы используете? Это происходит, когда вы работаете в среде IDE или только при развертывании? Если это развертывание, то это может быть связано с тем, что какой бы механизм развертывания вы ни использовали - maven-assembly, создающий один JAR с зависимостями, - известный виновник - сворачивает все ваши JAR в один каталог и схему Spring и файлы обработчиков перезаписывают друг друга.

9 голосов
/ 21 декабря 2009

Вы пытались поместить все свои банки непосредственно в каталог WEB-INF/lib вместо его подкаталогов?

Нет WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar, просто WEB-INF/lib/org.springframework.aop-3.0.0.RELEASE.jar

То же самое с остальными банками.

1 голос
/ 21 декабря 2011

Этот трюк работал и для меня: в Eclipse щелкните правой кнопкой мыши проект, а затем Maven> Обновить зависимости.

1 голос
/ 13 марта 2011

Я столкнулся с подобной ошибкой, но ссылался на Spring Webflow во вновь созданном проекте Roo. Решение для меня оказалось (Проект) / щелкните правой кнопкой мыши / Maven / Включить Maven Dependencies (с последующим перезапуском и повторной публикацией в Tomcat).

Оказалось, что STS или m2Eclipse не смогли вставить все файлы пружинного веб-потока в каталог lib веб-приложения. Я не уверен почему. Но включение maven-обработки зависимостей, а затем перестройка, казалось, решили проблему; наконец, jar-файлы веб-потока публикуются, и поэтому он может найти ссылки на пространство имен схемы.

Я исследовал это, изучив каталог tomcat, в котором было опубликовано веб-приложение, щелкнув по WEB-INF / lib / во время его работы и заметив, что в нем отсутствуют jar-файлы веб-потока.

0 голосов
/ 09 декабря 2016

Убедитесь, что все зависимости разрешены

Я столкнулся с этой проблемой в своей первой попытке AOP после весеннего урока. У моей проблемы не было spring-aop.jar в моем классе. В учебнике перечислены все другие зависимости, которые я должен был добавить, а именно:

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

Но тот, который отсутствовал. Еще одна проблема, которая может способствовать этому симптому в первоначальном вопросе.

Я использую Eclipse (neon), Java SE 8, Beans 3.0, Spring AOP 3.0, Spring 4.3.4. Проблема показала в представлении Java - не JEE--, и при попытке просто запустить приложение с помощью меню Правая кнопка -> Запуск от имени -> Приложение Java.

0 голосов
/ 28 января 2012

Если вы используете mvn, убедитесь, что у вас есть правильная область (если она у вас есть) в вашем pom.xml. Однажды я неправильно установил test , но мне нужно было runtime .

0 голосов
/ 09 ноября 2010

Вы также можете попробовать использовать плагин one-jar maven, который исправил проблему для нас. Просто следуйте инструкциям здесь .

0 голосов
/ 16 мая 2010

У меня такая же проблема с spring 3.0.2 и spring-beans-3.0.xsd.

Мое решение:

Создайте файл META-INF / spring.schemas в исходной папке и скопируйте все необходимые определения. Создайте spring.handlers тоже.

Я думаю, что класс PluggableSchemaResolver не работает правильно.

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

из Javadoc:

"По умолчанию этот класс будет искать файлы сопоставления в пути к классам, используя шаблон: META-INF / spring.schemas, позволяющий нескольким файлам одновременно существовать в пути к классам."

но в моем случае этот класс читал только первые найденные spring.schemas.

Grettings. pacovr

...