[cas-user] CAS 6.4.4.2 with MongoDB for Service-, Ticket-Registry and Session-Storage
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; -@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);
[cas-user] Re: CAS 6.4.4.2 with MongoDB for Service-, Ticket-Registry and Session-Storage
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 martin@springer.com 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; > > -@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 > >