My thought is that this bean ( jdbcPasswordChangeService)  is already 
created somehow, see below logs, but I do not know how to find it who 
created it,  I set a breakpoint in the only occurrence of this bean 
definition,  JdbcPasswordManagementConfiguration, the method does not 
appear invoked in debugger.

2024-05-06 12:23:41,783 DEBUG [restartedMain] 
[org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
<Creating shared instance of singleton bean 'jdbcAuthenticationHandlers'>  
 <== i have my class re-defined this and breakpoint is invoked successfully

2024-05-06 12:23:41,804 DEBUG [restartedMain] 
[org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
<Creating shared instance of singleton bean 'jdbcPasswordChangeService'>  
<==  do Not know who created it.

2024-05-06 12:23:41,836 DEBUG [restartedMain] 
[org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
<Creating shared instance of singleton bean 'requestContextFilter'>

any idea to find out who created this instance?

On Monday, May 6, 2024 at 11:53:07 AM UTC-4 Yan Zhou wrote:

> Hi,
>
> CAS 7.1.0 overlay, I need to override password change implementation, 
> using my own PasswordManagementService.
>
> I basically want to provide my own impl. of 
> JdbcPasswordManagementConfiguration. 
> See below QuestCasConfiguration, 
>
> also defined in META-INF/spring/...AutoImports
> org.apereo.cas.config.CasOverlayOverrideConfiguration
> org.apereo.cas.config.QuestCasConfiguration
>
>
> @EnableTransactionManagement(proxyTargetClass = false)
> @EnableConfigurationProperties(CasConfigurationProperties.class)
> @Configuration(value = "QuestCasConfiguration", proxyBeanMethods = false)
> public class QuestCasConfiguration {
>
> @Bean(name = "jdbcPasswordChangeService")
> public PasswordManagementService passwordChangeService(
> .......................
> final PasswordHistoryService passwordHistoryService) {
> return new 
> QuestJdbcPasswordManagementService(passwordManagementCipherExecutor,
> casProperties.getServer().getPrefix(), casProperties.getAuthn().getPm(), 
> jdbcPasswordManagementDataSource,
> jdbcPasswordManagementTransactionTemplate, passwordHistoryService, encoder); 
> <=== this is Not called 
> }
>
> @Bean(name = "jdbcPasswordManagementDataSource")
> public DataSource jdbcPasswordManagementDataSource(final 
> CasConfigurationProperties 
> casProperties) {
> return JpaBeans.newDataSource
> (casProperties.getAuthn().getJdbc().getQuery().get(0)); <=== this is 
> called
> }
> }
>
> the problem is that the two bean methods, one (
> jdbcPasswordManagementDataSource) is called but the other(
> passwordChangeService) is not, not sure why. I set a breakpoint in my 
> class to see how the code is invoked.
>
> This means passwordChangeService is already created somewhere else, but I 
> cannot figure that out, either. 
>
> I set a breakpoint in CAS source code: JdbcPasswordManagementConfiguration, 
> I do not see any method stopped during debug when CAS starts up.
>
> what did I miss? here are related logs
>
> 2024-05-06 10:49:55,104 DEBUG [restartedMain] 
> [org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
> <Overriding bean definition for bean 'localeResolver' with a different 
> definition: replacing [Root bean: class [null]; scope=; abstract=false; 
> lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; 
> primary=false; 
> factoryBeanName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration;
>  
> factoryMethodName=localeResolver; initMethodNames=null; 
> destroyMethodNames=[(inferred)]; defined in class path resource 
> [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]]
>  
> with [Root bean: class [null]; scope=refresh; abstract=false; 
> lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; 
> primary=false; factoryBeanName=CasWebAppConfiguration; 
> factoryMethodName=localeResolver; initMethodNames=null; 
> destroyMethodNames=[(inferred)]; defined in class path resource 
> [org/apereo/cas/config/CasWebAppConfiguration.class]]>
> 2024-05-06 10:49:55,107 DEBUG [restartedMain] 
> [org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
> <Overriding bean definition for bean 'jdbcPasswordManagementDataSource' 
> with a different definition: replacing [Root bean: class [null]; 
> scope=refresh; abstract=false; lazyInit=null; autowireMode=3; 
> dependencyCheck=0; autowireCandidate=true; primary=false; 
> factoryBeanName=JdbcPasswordManagementDataConfiguration; 
> factoryMethodName=jdbcPasswordManagementDataSource; initMethodNames=null; 
> destroyMethodNames=[(inferred)]; defined in class path resource 
> [org/apereo/cas/config/JdbcPasswordManagementConfiguration$JdbcPasswordManagementDataConfiguration.class]]
>  
> with [Root bean: class [null]; scope=; abstract=false; lazyInit=null; 
> autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; 
> factoryBeanName=QuestCasConfiguration; 
> factoryMethodName=jdbcPasswordManagementDataSource; initMethodNames=null; 
> destroyMethodNames=[(inferred)]; defined in class path resource 
> [org/apereo/cas/config/QuestCasConfiguration.class]]>
> 2024-05-06 10:49:55,257 DEBUG [restartedMain] 
> [org.springframework.beans.factory.support.DefaultListableBeanFactory] - 
> <Creating shared instance of singleton bean 
> 'org.springframework.boot.autoconfigure.AutoConfigurationPackages'>
> ....
>
>
>    JdbcPasswordHistoryManagementConfiguration matched:
>       - Requested features [PasswordManagementHistory] are enabled 
> (CasFeatureEnabledCondition)
>
>    JdbcPasswordManagementConfiguration matched:
>       - Requested features [PasswordManagement] are enabled 
> (CasFeatureEnabledCondition)
>
>   
>  
> JdbcPasswordManagementConfiguration.JdbcPasswordManagementDataConfiguration#jdbcPasswordManagementDataSource
>  
> matched:
>       - @ConditionalOnMissingBean (names: 
> jdbcPasswordManagementDataSource; SearchStrategy: all) did not find any 
> beans (OnBeanCondition)
>
>   
>  
> JdbcPasswordManagementConfiguration.JdbcPasswordManagementServiceConfiguration#passwordChangeService
>  
> matched:
>       - @ConditionalOnMissingBean (names: jdbcPasswordChangeService; 
> SearchStrategy: all) did not find any beans (OnBeanCondition)
>
>   
>  
> JdbcPasswordManagementConfiguration.JdbcPasswordManagementTransactionConfiguration#jdbcPasswordManagementTransactionTemplate
>  
> matched:
>       - @ConditionalOnMissingBean (names: 
> jdbcPasswordManagementTransactionTemplate; SearchStrategy: all) did not 
> find any beans (OnBeanCondition)
>
> thanks!
> Yan
>

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
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 cas-user+unsubscr...@apereo.org.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/10606002-99c4-4ebf-b34a-5d997ac40026n%40apereo.org.

Reply via email to