无法部署webapp将securitycontextlogouthandler转换为logouthandler

时间:2016-03-28 19:43:35

标签: java spring spring-security

设置属性时我遇到了bean的问题。 我使用springource 3.2.5与spring-security

我错过了什么? 我正在维护这段代码,所以我不太明白为什么我无法使它成功。

堆栈跟踪如下:

  

引起:java.lang.IllegalStateException:无法将类型[org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler]的值转换为必需的类型[org.springframework.security.web.authentication.logout.LogoutHandler]对于属性' logoutHandlers [0]':没有匹配的编辑器或转换器   tegy发现       在org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:267)       在org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:128)       在org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:466)       在org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:198)       在org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:448)       在org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:494)       在org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:488)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1463)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1422)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)       at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)       在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)       在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)       在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:154)       在org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:623)       在org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1075)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:979)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)       at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)       在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)       在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)       在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)       在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:154)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1417)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)       at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)       在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)       在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)       在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)       at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:610)       在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)       at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)       在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)       在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)       在weblogic.servlet.internal.EventsManager $ FireContextListenerAction.run(EventsManager.java:481)       在weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)       在weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)       在weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)       在weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1872)       在weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)       在weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)       在weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)       在weblogic.application.internal.flow.ModuleStateDriver $ 3.next(ModuleStateDriver.java:425)       在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)       在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)       在weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)       在weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)       在weblogic.application.internal.flow.ModuleStateDriver $ 3.next(ModuleStateDriver.java:425)       在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)       在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)       在weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)       在weblogic.application.internal.BaseDeployment $ 2.next(BaseDeployment.java:636)       在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)       在weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)       在weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)       在weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)       在weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)       在weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)       在weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)       在weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)       在weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)       在weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)       在weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)       在weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)       在weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)       在weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)       在weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access $ 100(DeploymentReceiverCallbackDeliverer.java:13)       在weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer $ 2.run(DeploymentReceiverCallbackDeliverer.java:68)       at weblogic.work.SelfTuningWorkManagerImpl $ WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)       在weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)       在weblogic.work.ExecuteThread.run(ExecuteThread.java:176)

可能导致问题的原因是什么?

我在配置xml上有这个:

的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:/securityContext.xml,
        classpath*:/localSecurityContext.xml,
    </param-value>
</context-param>

securityContext.xml

<beans:bean id="logoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" lazy-init="false" />

<beans:bean id="cookieLogoutHandler" class="org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler" lazy-init="false" >
    <beans:constructor-arg value="SSRMC"/>
</beans:bean>
<beans:bean id="concurrentSessionFilter"
    class="mx.org.ife.rfe.siirfe.comun.usuariologin.authenticator.session.ConcurrentSessionFilter" lazy-init="false" >
    <beans:constructor-arg ref="sessionRegistry"/>
    <beans:constructor-arg value="/" />
    <beans:property name="logoutHandlers" >
        <beans:list value-type="org.springframework.security.web.authentication.logout.LogoutHandler">
            <beans:ref local="logoutHandler"/>
            <beans:ref local="cookieLogoutHandler"/>
        </beans:list>
    </beans:property>
</beans:bean>

0 个答案:

没有答案