복붙노트

[SPRING] Spring 3.0 : XML 스키마 네임 스페이스 용 Spring NamespaceHandler를 찾을 수 없다.

SPRING

Spring 3.0 : XML 스키마 네임 스페이스 용 Spring NamespaceHandler를 찾을 수 없다.

내 설치는 매우 간단합니다. 웹 프런트 엔드가 있고, 백엔드는 스프링으로 연결되어 있습니다.

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

해결법

  1. ==============================

    1.모든 하위 항아리 대신 WEB-INF / lib 디렉토리에 직접 모든 항아리를 넣으려고 했습니까?

    모든 하위 항아리 대신 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

    다른 항아리들과 동일합니다.

  2. ==============================

    2.Maven-shade-plugin을 사용하는 중에이 오류가 발생했습니다. 해결책은 다음과 같습니다.

    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>
    

    (Credits : 단일 jar에 여러 개의 스프링 종속성을 병합 할 때 spring.handlers / spring.schemas가 덮어 쓰이지 않도록하는 아이디어)

  3. ==============================

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

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

    maven-shade-plugin을 사용하여 비슷한 문제가 발생했습니다. 위의 예제 페이지에서 내 문제에 대한 해결책을 찾았습니다.

  4. ==============================

    4.어떤 IDE를 사용하고 있습니까? IDE 내에서 작업하거나 배포시에만이 작업이 수행됩니까? 배포의 경우, 의존성이있는 단일 JAR을 만드는 것이 알려진 주범 인 Maven 어셈블리가 모든 JAR을 단일 디렉토리로 축소하고 Spring 스키마와 핸들러 파일이 각각 덮어 쓰기 때문에 어떤 배치 메커니즘을 사용했기 때문일 수 있습니다 다른.

    어떤 IDE를 사용하고 있습니까? IDE 내에서 작업하거나 배포시에만이 작업이 수행됩니까? 배포의 경우, 의존성이있는 단일 JAR을 만드는 것이 알려진 주범 인 Maven 어셈블리가 모든 JAR을 단일 디렉토리로 축소하고 Spring 스키마와 핸들러 파일이 각각 덮어 쓰기 때문에 어떤 배치 메커니즘을 사용했기 때문일 수 있습니다 다른.

  5. ==============================

    5.유사한 오류가 발생했지만 새로 생성 된 Roo 프로젝트의 Spring Webflow를 참조했습니다. 나를위한 해결책은 (Project) / 마우스 오른쪽 버튼 / Maven / Enable Maven Dependencies (일부 재시작 후 Tomcat으로 다시 게시)로 밝혀졌습니다.

    유사한 오류가 발생했지만 새로 생성 된 Roo 프로젝트의 Spring Webflow를 참조했습니다. 나를위한 해결책은 (Project) / 마우스 오른쪽 버튼 / Maven / Enable Maven Dependencies (일부 재시작 후 Tomcat으로 다시 게시)로 밝혀졌습니다.

    STS 또는 m2Eclipse가 모든 webflow jars를 웹 응용 프로그램 lib 디렉토리로 밀어 넣지 못하고있는 것으로 보입니다. 이유가 확실하지 않습니다. 그러나 Maven 종속성 처리를 활성화 한 다음 다시 빌드하면 문제가 해결 된 것 같습니다. webflow jar가 마침내 게시되고 스키마 네임 스페이스 참조를 찾을 수 있습니다.

    웹 응용 프로그램이 게시 된 tomcat 디렉토리를 탐색하여 WEB-INF / lib /를 클릭하고 실행 중일 때 webflow jar 파일이 누락되었다는 사실을 알아 냄으로써이를 조사했습니다.

  6. ==============================

    6.이 트릭도 저에게 효과적이었습니다. Eclipse에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Maven> Update Dependencies를 클릭하십시오.

    이 트릭도 저에게 효과적이었습니다. Eclipse에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Maven> Update Dependencies를 클릭하십시오.

  7. ==============================

    7.다른 사람이이 문제를 겪는 경우 Eclipse를 사용했습니다. 오른쪽 클릭 동작을 통해 프로젝트를 실행합니다. 이 오류는 J2EE 뷰에서 발생했지만 Java 뷰에서는 발생하지 않았습니다. 확실하지 않습니다 - 올바른 'lib'디렉토리에 라이브러리를 추가하는 것으로 가정합니다.

    다른 사람이이 문제를 겪는 경우 Eclipse를 사용했습니다. 오른쪽 클릭 동작을 통해 프로젝트를 실행합니다. 이 오류는 J2EE 뷰에서 발생했지만 Java 뷰에서는 발생하지 않았습니다. 확실하지 않습니다 - 올바른 'lib'디렉토리에 라이브러리를 추가하는 것으로 가정합니다.

    또한 Maven 프로젝트를 사용하여 m2eclipse가 종속성을 관리 할 수 ​​있도록했습니다.

  8. ==============================

    8.스프링 3.0.2와 스프링 - 빈즈 3.0.xsd와 같은 문제가 있습니다.

    스프링 3.0.2와 스프링 - 빈즈 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 패턴을 사용하여 classpath에 파일 매핑을 찾습니다. 여러 파일이 클래스 패스에 동시에 존재할 수 있습니다."

    하지만 제 경우에는이 수업이 첫 봄을 읽었을뿐입니다.

    인사말. Pacov

  9. ==============================

    9.mvn을 사용하는 경우 pom.xml에 올바른 범위 (정의 된 경우)가 있는지 확인하십시오. 한 번 테스트를 잘못 설정했지만 런타임에 필요했습니다.

    mvn을 사용하는 경우 pom.xml에 올바른 범위 (정의 된 경우)가 있는지 확인하십시오. 한 번 테스트를 잘못 설정했지만 런타임에 필요했습니다.

  10. ==============================

    10.스프링 튜토리얼을 따르면서 AOP에서의 첫 번째 시도에서이 문제를 겪는다. 나의 문제는 나의 classpath에서 spring-aop.jar를 가지지 않고 있었다. 이 튜토리얼에는 추가해야하는 다른 모든 종속성이 나열되어있다. 즉 :

    스프링 튜토리얼을 따르면서 AOP에서의 첫 번째 시도에서이 문제를 겪는다. 나의 문제는 나의 classpath에서 spring-aop.jar를 가지지 않고 있었다. 이 튜토리얼에는 추가해야하는 다른 모든 종속성이 나열되어있다. 즉 :

    그러나 그 중 하나는 사라졌습니다. 원래 질문에서 그 증상에 기여할 수있는 또 하나의 문제.

    이클립스 (네온), 자바 SE 8, 콩 3.0, 봄 AOP 3.0, 스프링 4.3.4를 사용하고 있습니다. 이 문제는 Java 뷰 (JEE 없음)에서 보였으며 오른쪽 버튼 메뉴 -> Run As (실행) -> Java Application (Java 응용 프로그램)을 사용하여 응용 프로그램을 실행하려고 시도하는 동안 나타났습니다.

  11. ==============================

    11.우리를 위해 문제를 해결 한 one-jar maven 플러그인을 사용해 볼 수도 있습니다. 간단히 여기의 지시 사항을 따르십시오.

    우리를 위해 문제를 해결 한 one-jar maven 플러그인을 사용해 볼 수도 있습니다. 간단히 여기의 지시 사항을 따르십시오.

  12. from https://stackoverflow.com/questions/1937767/spring-3-0-unable-to-locate-spring-namespacehandler-for-xml-schema-namespace by cc-by-sa and MIT license