ah sorry for the typo, in line ... Modules cas-server-support-mongo-service-registry and cas-server-support-mongo-ticket-registry both configure named MongoTemplate beans, which they actually do even use themselves, but lead to ambiguity when resolving a single candidate for the cas-server-support-session-mongo module. ...
I forgot the important word "NOT". Instead it should read: ... Modules cas-server-support-mongo-service-registry and cas-server-support-mongo-ticket-registry both configure named MongoTemplate beans, which they actually do NOT even use themselves, but lead to ambiguity when resolving a single candidate for the cas-server-support-session-mongo module. .... On Monday, January 17, 2022 at 5:33:31 PM UTC+1 [email protected] wrote: > Hi cas-users, > > Using CAS 6.4.4.2 with MongoDB for Service-, Ticket-Registry and > Session-Storage at the same time fails to auto-configure in my setup. > > My observations so far: > > 1. Adding > > ------------------------------------------------------------------------------------------------ > implementation > "org.apereo.cas:cas-server-support-session-mongo:${project.'cas.version'}" > > ------------------------------------------------------------------------------------------------ > > to build.gradle only, also requires to re-enable MongoAutoConfiguration > and MongoDataAutoConfigration by overriding config key > spring.autoconfigure.exclude since > /webapp/cas-server-webapp-resources/src/main/resources/application.properties > disables it: > > > ------------------------------------------------------------------------------------------------ > spring.autoconfigure.exclude= \ > > org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ > org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\ > > org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration > > ------------------------------------------------------------------------------------------------ > > otherwise no MongoTemplate is found at all: > > > ------------------------------------------------------------------------------------------------ > ************************** > APPLICATION FAILED TO START > *************************** > > Description: > > Parameter 0 of method mongoSessionRepository in > org.springframework.session.data.mongo.config.annotation.web.http.MongoHttpSessionConfiguration > > required a bean of type > 'org.springframework.data.mongodb.core.MongoOperations' that could not be > found. > > > Action: > > Consider defining a bean of type > 'org.springframework.data.mongodb.core.MongoOperations' in your > configuration. > > ------------------------------------------------------------------------------------------------ > > > 2. Additionally enabling > > > ------------------------------------------------------------------------------------------------ > implementation > "org.apereo.cas:cas-server-support-mongo-service-registry:${project.'cas.version'}" > implementation > "org.apereo.cas:cas-server-support-mongo-ticket-registry:${project.'cas.version'}" > > ------------------------------------------------------------------------------------------------ > > Modules cas-server-support-mongo-service-registry and > cas-server-support-mongo-ticket-registry both configure named MongoTemplate > beans, which they actually do even use themselves, but lead to ambiguity > when resolving a single candidate for the cas-server-support-session-mongo > module. > > Removing these @Bean definitions solves this problem: > > > ------------------------------------------------------------------------------------------------ > diff --git > a/support/cas-server-support-mongo-service-registry/src/main/java/org/apereo/cas/config/MongoDbServiceRegistryConfiguration.java > > b/support/cas-server-support-mongo-service-registry/src/main/java/org/apereo/cas/config/MongoDbServiceRegistryConfiguration.java > index 0227845922..9ed3aea44d 100644 > --- > a/support/cas-server-support-mongo-service-registry/src/main/java/org/apereo/cas/config/MongoDbServiceRegistryConfiguration.java > +++ > b/support/cas-server-support-mongo-service-registry/src/main/java/org/apereo/cas/config/MongoDbServiceRegistryConfiguration.java > @@ -47,9 +47,7 @@ public class MongoDbServiceRegistryConfiguration { > @Qualifier("sslContext") > private ObjectProvider<SSLContext> sslContext; > > - @ConditionalOnMissingBean(name = "mongoDbServiceRegistryTemplate") > - @Bean > - public MongoTemplate mongoDbServiceRegistryTemplate() { > + private MongoTemplate mongoDbServiceRegistryTemplate() { > val mongo = casProperties.getServiceRegistry().getMongo(); > val factory = new > MongoDbConnectionFactory(sslContext.getObject()); > > diff --git > a/support/cas-server-support-mongo-ticket-registry/src/main/java/org/apereo/cas/config/MongoDbTicketRegistryConfiguration.java > > b/support/cas-server-support-mongo-ticket-registry/src/main/java/org/apereo/cas/config/MongoDbTicketRegistryConfiguration.java > index 0a5b538a33..9195ff88a7 100644 > --- > a/support/cas-server-support-mongo-ticket-registry/src/main/java/org/apereo/cas/config/MongoDbTicketRegistryConfiguration.java > +++ > b/support/cas-server-support-mongo-ticket-registry/src/main/java/org/apereo/cas/config/MongoDbTicketRegistryConfiguration.java > @@ -55,10 +55,7 @@ public class MongoDbTicketRegistryConfiguration { > return registry; > } > > - @ConditionalOnMissingBean(name = "mongoDbTicketRegistryTemplate") > - @Bean > - @RefreshScope > - public MongoTemplate mongoDbTicketRegistryTemplate() { > + private MongoTemplate mongoDbTicketRegistryTemplate() { > val factory = new > MongoDbConnectionFactory(sslContext.getObject()); > val mongo = casProperties.getTicket().getRegistry().getMongo(); > return factory.buildMongoTemplate(mongo); > > ------------------------------------------------------------------------------------------------ > > otherwise it fails with > > > ------------------------------------------------------------------------------------------------ > *************************** > APPLICATION FAILED TO START > *************************** > > Description: > > Parameter 0 of method mongoSessionRepository in > org.springframework.session.data.mongo.config.annotation.web.http.MongoHttpSessionConfiguration > > required a single bean, but 2 were found: > - mongoDbServiceRegistryTemplate: defined by method > 'mongoDbServiceRegistryTemplate' in class path resource > [org/apereo/cas/config/MongoDbServiceRegistryConfiguration.class] > - mongoDbTicketRegistryTemplate: defined in BeanDefinition defined > in class path resource > [org/apereo/cas/config/MongoDbTicketRegistryConfiguration.class] > > > Action: > > Consider marking one of the beans as @Primary, updating the consumer to > accept multiple beans, or using @Qualifier to identify the bean that should > be consumed > > ------------------------------------------------------------------------------------------------ > > My question now is, how can I fix this nonfunctional behavior without > patching the original CAS 6.4.4.2 modules > cas-server-support-mongo-service-registry and > cas-server-support-mongo-ticket-registry? Is there better, easier or more > elegant way to use MongoDB for Session, Service and Ticket Storage at the > same time? > > Regards > > Martin > > > > > > -- - 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 [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/4fdaacef-2e4b-4024-a77e-cd67f3b63689n%40apereo.org.
