2017-10-24 11 views
0

spring-saml 1.0.2-RELEASE로 내 스프링 구성에 문제가 있습니다.Bean not found spring-saml

application.context.xml :

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:annotation-config/> 
<context:component-scan base-package="smc.services.*;smc.repositories.*"/> 

<import resource="samlSecurityContext.xml"/> 
... 

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myBean' defined in file [C:\mypath\myBean.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.Map]: : Cannot find class [org.springframework.security.saml.metadata.MetadataGeneratorFilter] for bean with name 'metadataGeneratorFilter' defined in ServletContext resource [/WEB-INF/config/samlSecurityContext.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.security.saml.metadata.MetadataGeneratorFilter; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.security.saml.metadata.MetadataGeneratorFilter] for bean with name 'metadataGeneratorFilter' defined in ServletContext resource [/WEB-INF/config/samlSecurityContext.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.security.saml.metadata.MetadataGeneratorFilter 
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:738) ~[spring-beans-3.2.6.RELEASE.jar:3.2.6.RELEASE] 
... 
최대한 멀리 볼 수

, 내가 이런 식으로 정의 된 콩 MetadataGeneratorFilter를 찾을 수 없습니다 :이 오류입니다

samlSecurityContext.xml :

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:security="http://www.springframework.org/schema/security" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    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.1.xsd 
      http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 


<!-- Scan for auto-wiring classes in spring saml packages --> 
<context:component-scan base-package="org.springframework.security.saml"/> 


<!-- Filter automatically generates default SP metadata --> 
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter"> 
    <constructor-arg> 
     <bean class="org.springframework.security.saml.metadata.MetadataGenerator"> 
      <property name="extendedMetadata"> 
       <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> 
        <property name="idpDiscoveryEnabled" value="true"/> 
       </bean> 
      </property> 
     </bean> 
    </constructor-arg> 
</bean> 
... 

나는 샘플 프로젝트에서 예를했다,하지만 난 AB 확실하지 않다 Spring의 내 버전과의 호환성. 이것은 내 pom.xml 파일입니다 :

<spring.version>3.2.6.RELEASE</spring.version> 
    <spring.security.version>3.2.0.RELEASE</spring.security.version> 
    ... 
    <dependency> 
     <groupId>org.springframework.security.extensions</groupId> 
     <artifactId>spring-security-saml2-core</artifactId> 
     <version>1.0.2.RELEASE</version> 
    </dependency> 

내 IDE는 org.springframework.security.saml을 참조 그래서 문제가 관련되어 있음을 확신 ... "그 패키지에 정의 된 콩이 없다"라고 내 편에서 약간의 봄 구성이지만, 미안하지만, 나는 틀린 것을 알아낼 수 없었다. 어떤 단서? 미리 감사드립니다.

+1

Thumb 규칙 : 빈 생성 오류의 마지막 부분을 확인하십시오. 이 파일은'java.lang.ClassNotFoundException : org.springframework.security.saml.metadata.MetadataGeneratorFilter'; 클래스 경로에 'MetadataGeneratorFilter' 클래스가 있습니까? (어쩌면 의존성 문제) –

+0

네, 그게 문제였습니다. 감사! – MarcosTonina

답변

1

문제는 내가 pom에 종속성을 추가했기 때문에 문제가 아니었지만 클래스 패스에 항아리를 추가하지 않았습니다.

<dependency> 
    <groupId>org.springframework.security.extensions</groupId> 
    <artifactId>spring-security-saml2-core</artifactId> 
    <version>1.0.2.RELEASE</version> 
    <scope>system</scope> 
    <systemPath>${smc.lib.path}/spring-security-saml2-core-1.0.2.RELEASE.jar</systemPath> 
</dependency> 

감사 Abhishek Bhatia에 : 나는 내 lib 폴더에있는 항아리를 추가하고,이처럼 치어에 시스템로 범위를 설정 고정!