SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/Tomcat7.0/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/Tomcat7.0/webapps/cas/WEB-INF/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLo
ggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2013-05-21 14:35:29,674 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Loaded 0 services.>
log4j:ERROR A "org.apache.log4j.xml.DOMConfigurator" object is not assignable to a "org.apache.log4j.spi.Configurator" v
ariable.
log4j:ERROR The class "org.apache.log4j.spi.Configurator" was loaded by
log4j:ERROR [org.apache.catalina.loader.StandardClassLoader@d9b071] whereas object of type
log4j:ERROR "org.apache.log4j.xml.DOMConfigurator" was loaded by [WebappClassLoader
  context: /cas
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@d9b071
].
log4j:ERROR Could not instantiate configurator [org.apache.log4j.xml.DOMConfigurator].
2013-05-21 14:35:30,345 ERROR [org.springframework.web.context.ContextLoader] - <Context initialization failed>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'centralAuthenticationService' de
fined in ServletContext resource [/WEB-INF/spring-configuration/applicationContext.xml]: Cannot resolve reference to bea
n 'authenticationManager' while setting constructor argument; nested exception is org.springframework.beans.factory.Bean
CreationException: Error creating bean with name 'authenticationManager' defined in ServletContext resource [/WEB-INF/de
ployerConfigContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupp
ortedException: Failed to convert property value of type 'java.util.ArrayList' to required type 'java.util.List' for pro
perty 'authenticationHandlers'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.j
asig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler] to required type [org.jasig.cas.authentication.handler.Authen
ticationHandler] for property 'authenticationHandlers[1]': no matching editors or conversion strategy found

解决方案 »

  1.   

    信息挺明显的啊,
    Failed to convert property value of type 'java.util.ArrayList' to required type 'java.util.List' for pro
    perty 'authenticationHandlers';
      

  2.   

    这里没有问题吧,应该是log4j出错,引起的下面的错误。
      

  3.   

    <property name="authenticationHandlers">
    <list>
    <!--
    | This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
    | a server side SSL certificate.
    +-->
    <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
    p:httpClient-ref="httpClient" />
    <!--
    | This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
    | into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
    | where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
    | local authentication strategy.  You might accomplish this by coding a new such handler and declaring
    | edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
    +-->
    <!--<bean 
    class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />-->

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="sql" value="select password from user where username=?" />
                        <!--<property name="passwordEncoder" ref="MD5PasswordEncoder"/>-->
    </bean>
    </list>
    </property>
    这里应该为出错的地方,大神帮我看看吧。
      

  4.   

    不是,是 Error creating bean with name 'centralAuthenticationService'
      

  5.   

    大神能详细点吗,刚研究cas,在这里卡了好久了。
      

  6.   

    <bean id="authenticationManager"
    class="org.jasig.cas.authentication.AuthenticationManagerImpl">

    <!-- Uncomment the metadata populator to allow clearpass to capture and cache the password
         This switch effectively will turn on clearpass.
    <property name="authenticationMetaDataPopulators">
       <list>
          <bean class="org.jasig.cas.extension.clearpass.CacheCredentialsMetaDataPopulator">
             <constructor-arg index="0" ref="credentialsCache" />
          </bean>
       </list>
    </property>
     -->

    <!--
    | This is the List of CredentialToPrincipalResolvers that identify what Principal is trying to authenticate.
    | The AuthenticationManagerImpl considers them in order, finding a CredentialToPrincipalResolver which 
    | supports the presented credentials.
    |
    | AuthenticationManagerImpl uses these resolvers for two purposes.  First, it uses them to identify the Principal
    | attempting to authenticate to CAS /login .  In the default configuration, it is the DefaultCredentialsToPrincipalResolver
    | that fills this role.  If you are using some other kind of credentials than UsernamePasswordCredentials, you will need to replace
    | DefaultCredentialsToPrincipalResolver with a CredentialsToPrincipalResolver that supports the credentials you are
    | using.
    |
    | Second, AuthenticationManagerImpl uses these resolvers to identify a service requesting a proxy granting ticket. 
    | In the default configuration, it is the HttpBasedServiceCredentialsToPrincipalResolver that serves this purpose. 
    | You will need to change this list if you are identifying services by something more or other than their callback URL.
    +-->
    <property name="credentialsToPrincipalResolvers">
    <list>
    <!--
    | UsernamePasswordCredentialsToPrincipalResolver supports the UsernamePasswordCredentials that we use for /login 
    | by default and produces SimplePrincipal instances conveying the username from the credentials.

    | If you've changed your LoginFormAction to use credentials other than UsernamePasswordCredentials then you will also
    | need to change this bean declaration (or add additional declarations) to declare a CredentialsToPrincipalResolver that supports the
    | Credentials you are using.
    +-->
    <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" >
    <property name="attributeRepository" ref="attributeRepository" />
    </bean>
    <!--
    | HttpBasedServiceCredentialsToPrincipalResolver supports HttpBasedCredentials.  It supports the CAS 2.0 approach of
    | authenticating services by SSL callback, extracting the callback URL from the Credentials and representing it as a
    | SimpleService identified by that callback URL.
    |
    | If you are representing services by something more or other than an HTTPS URL whereat they are able to
    | receive a proxy callback, you will need to change this bean declaration (or add additional declarations).
    +-->
    <bean
    class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
    </list>
    </property> <!--
    | Whereas CredentialsToPrincipalResolvers identify who it is some Credentials might authenticate, 
    | AuthenticationHandlers actually authenticate credentials.  Here we declare the AuthenticationHandlers that
    | authenticate the Principals that the CredentialsToPrincipalResolvers identified.  CAS will try these handlers in turn
    | until it finds one that both supports the Credentials presented and succeeds in authenticating.
    +-->
    <property name="authenticationHandlers">
    <list>
    <!--
    | This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
    | a server side SSL certificate.
    +-->
    <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
    p:httpClient-ref="httpClient" />
    <!--
    | This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
    | into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
    | where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
    | local authentication strategy.  You might accomplish this by coding a new such handler and declaring
    | edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
    +-->
    <!--<bean 
    class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />-->

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="sql" value="select password from user where username=?" />
                        <!--<property name="passwordEncoder" ref="MD5PasswordEncoder"/>-->
    </bean>
    </list>
    </property>
    </bean>这是 bean with name 'centralAuthenticationService'的整个配置。
      

  7.   

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="sql" value="select password from user where username=?" />
                        <!--<property name="passwordEncoder" ref="MD5PasswordEncoder"/>-->
    </bean>
    去掉。你可以自己写一个handler (extends AbstractUsernamePasswordAuthenticationHandler),然后加到这个位置。