The reason is that currently serviceValidateController bean in CAS is not @ConditionalOnMissingBean
D. From: robertoschwald <[email protected]> Reply: [email protected] <[email protected]> Date: May 4, 2017 at 11:40:26 AM To: CAS Community <[email protected]> Subject: [cas-user] Overloading Bean Configuration does not work in 5.0.4 I need to overload the ServiceValidateController Bean by my own configuration bean, but it seems Spring Boot is first using my bean, then again the original one and I don't know why. My bean is called CasOverlayedValidationConfiguration: @Configuration("casOverlayedValidationConfiguration") @EnableConfigurationProperties(CasConfigurationProperties.class) @Order(value = 50000) public class CasOverlayedValidationConfiguration { @Autowired private CasConfigurationProperties casProperties; @Autowired @Qualifier("casAttributeEncoder") private CasAttributeEncoder casAttributeEncoder; @Autowired @Qualifier("cas3SuccessView") private View cas3SuccessView; @Autowired @Qualifier("authenticationContextValidator") private AuthenticationContextValidator authenticationContextValidator; @Autowired @Qualifier("defaultAuthenticationSystemSupport") private AuthenticationSystemSupport authenticationSystemSupport; @Autowired @Qualifier("cas20WithoutProxyProtocolValidationSpecification") private ValidationSpecification cas20WithoutProxyProtocolValidationSpecification; @Autowired @Qualifier("cas2ServiceFailureView") private View cas2ServiceFailureView; @Autowired @Qualifier("proxy20Handler") private ProxyHandler proxy20Handler; @Autowired @Qualifier("servicesManager") private ServicesManager servicesManager; @Autowired @Qualifier("centralAuthenticationService") private CentralAuthenticationService centralAuthenticationService; @Autowired @Qualifier("defaultArgumentExtractor") private ArgumentExtractor argumentExtractor; @Autowired @Qualifier("defaultMultifactorTriggerSelectionStrategy") private MultifactorTriggerSelectionStrategy multifactorTriggerSelectionStrategy; @Autowired private View cas3ServiceSuccessView; @Autowired private View cas3ServiceJsonView; /* Use cas3ServiceSuccessView to be able to release attributes in CAS 2.0 serviceValidate until all CAS Clients are migrated */ @Bean public ServiceValidateController serviceValidateController() { final ServiceValidateController c = new ServiceValidateController(); c.setValidationSpecification(this.cas20WithoutProxyProtocolValidationSpecification); c.setSuccessView(cas3ServiceSuccessView); c.setFailureView(cas2ServiceFailureView); c.setProxyHandler(proxy20Handler); c.setAuthenticationSystemSupport(authenticationSystemSupport); c.setServicesManager(servicesManager); c.setCentralAuthenticationService(centralAuthenticationService); c.setArgumentExtractor(argumentExtractor); c.setMultifactorTriggerSelectionStrategy(multifactorTriggerSelectionStrategy); c.setAuthenticationContextValidator(authenticationContextValidator); c.setJsonView(cas3ServiceJsonView); c.setAuthnContextAttribute(casProperties.getAuthn().getMfa().getAuthenticationContextAttribute()); return c; } } The logs show this: 1. First, my bean definition overwrites the one from 2017-05-04 15:53:22,312 INFO [org.apereo.cas.web.CasWebApplication] - <The following profiles are active: native> 2017-05-04 15:53:22,341 INFO [org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext] - <Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e25a92e: startup date [Thu May 04 15:53:22 CEST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@387c703b> 2017-05-04 15:53:23,372 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - <Overriding bean definition for bean 'serviceValidateController' with a different definition: replacing [Generic bean: class [org.apereo.cas.web.ServiceValidateController]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/projects/cas5/cas/build/libs/cas.war!/WEB-INF/lib/cas-server-support-validation-5.0.4.jar!/org/apereo/cas/web/ServiceValidateController.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=casOverlayedValidationConfiguration; factoryMethodName=serviceValidateController; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/apereo/cas/web/config/CasOverlayedValidationConfiguration.class]]> This would be fine. BUT a second later, it again overwrites my bean with the one from "CasValidationConfiguration.class", but as Classpath resource: 2017-05-04 15:53:23,380 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - <Overriding bean definition for bean 'serviceValidateController' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=CasOverlayedValidationConfiguration; factoryMethodName=serviceValidateController; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/apereo/cas/web/config/CasOverlayedValidationConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=casValidationConfiguration; factoryMethodName=serviceValidateController; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/apereo/cas/web/config/CasValidationConfiguration.class]]> My overlay is based on the gradle overlay template. It doesn't matter if I start the application as a standalone war application using "java -jar cas.war", or in Intellij using a local Tomcat 8 Server. Any ideas? Thanks Robert -- - CAS gitter chatroom: https://gitter.im/apereo/cas - CAS mailing list guidelines: https://apereo.github.io/cas/Mailing-Lists.html - CAS documentation website: https://apereo.github.io/cas - CAS project website: https://github.com/apereo/cas --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/a06acd49-1dd1-4089-8d68-410e0396a6b8%40apereo.org. -- - CAS gitter chatroom: https://gitter.im/apereo/cas - CAS mailing list guidelines: https://apereo.github.io/cas/Mailing-Lists.html - CAS documentation website: https://apereo.github.io/cas - CAS project website: https://github.com/apereo/cas --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/etPan.590b4ced.395a00e5.ac2%40unicon.net.
