设置属性时我遇到了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>