[cas-user] CAS 6.4.4.2 with MongoDB for Service-, Ticket-Registry and Session-Storage

2022-01-17 Thread 'martin....@springer.com' via CAS Community
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

2022-01-17 Thread 'martin....@springer.com' via CAS Community
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
>  
>