【CAS6.6源码解析】源码构建时-默认service配置不生效解决方案

CAS6的源码提供了默认的HTTPSandIMAPS-10000001.json配置用于授权所有的https和imaps服务,但是当添加JsonServiceRegistry模块启动后,会发现service是没有被注册的,是由于json路径引起的错误,可以把路径修改为绝对路径以解决此问题。


文章目录


问题描述

CAS默认采用json的方式去文件中读取服务的定义从而注册服务。但是需要添加cas-server-support-json-service-registry的依赖。

在源码构建的方式下,添加了依赖后,启动项目,依然会发现没有服务被注册,提示如下:

bash 复制代码
INFO [org.apereo.cas.services.AbstractServicesManager] - <Loaded [0] service(s) from [JsonServiceRegistry].>

常见的使用的配置如下(CAS6.6):

bash 复制代码
##
# Service Registry(服务注册)
#
# 开启识别Json文件,默认false
cas.serviceRegistry.core.init-from-json=true

#自动扫描服务配置,默认开启
#cas.serviceRegistry.watcherEnabled=true

#120秒扫描一遍
cas.serviceRegistry.schedule.repeatInterval=120000

#延迟15秒开启
# cas.serviceRegistry.schedule.startDelay=15000

##
# Json配置
cas.serviceRegistry.json.location=classpath:/services

查看项目启动时候的日志,能够发现就是路径引起的问题:

bash 复制代码
 INFO [org.apereo.cas.services.resource.AbstractResourceBasedServiceRegistry] - <Watching service registry directory at [/Users/atfwus/open_proj/cas-6.6.x/webapp/cas-server-webapp-init/build/resources/main/services]>
 INFO [org.apereo.cas.util.io.PathWatcherService] - <Watching directory path at [/Users/atfwus/open_proj/cas-6.6.x/webapp/cas-server-webapp-init/build/resources/main/services]>

因为去init模块的build文件中找,会发现service相关配置根本不在这里面。所以我们需要更改路径。

问题调试

在类org.apereo.cas.configuration.model.support.services.json.JsonServiceRegistryProperties的父类SpringResourceProperties中,是相关资源的定义。

可以看到默认的路径:

查看SpringResourceProperties的注释可以发现:

是可以用绝对路径来表示资源的。

于是我们可以考虑使用绝对路径来表示出service目录的具体位置。

解决方案

将和location相关的配置修改为:(绝对路径的方式,指向cas-server-webapp模块的build文件中的资源文件)

bash 复制代码
cas.serviceRegistry.json.location=file:/Users/atfwus/open_proj/cas-6.6.x/webapp/cas-server-webapp/build/resources/bootRun/services

重启项目,看到如下提示就是服务配置加载成功:


总结:

  • cas默认使用service文件路径使用classpath相对路径的方式表示,但实际上存在问题,导致去init模块的build文件去找了,而不是去cas-server-webapp模块的build文件找。
  • 可以使用绝对路径的方式解决上述问题。

ATFWUS 2023-07-27

相关推荐
阿维的博客日记17 天前
jvm学习笔记-轻量级锁内存模型
jvm·cas·轻量级锁
Hello-Brand1 个月前
架构与思维:漫谈高并发业务的CAS及ABA
高并发·cas·aba
GGBondlctrl2 个月前
【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);
java·开发语言·面试·cas·synchronized加锁·锁的策略
一只BI鱼3 个月前
CAS简单解析
java·cas·乐观锁
_whitepure4 个月前
CAS详解
cas·java多线程·unsafe·aba问题·cas原理
王小磊学代码5 个月前
每天一学(2)
线程池·cas·阻塞队列
他叫阿来6 个月前
CAS操作
cas·原子性·aba问题
慕木兮人可6 个月前
SpringBoot2.0.x旧版集成Swagger UI报错Unable to infer base url...解决办法
java·spring boot·cas·springsecurity·swagger-ui
Hello-Brand8 个月前
高并发下的数据一致性保障(图文全面总结)
分布式·高并发·分布式锁·cas·一致性·aba
星月IWJ8 个月前
cas_ssl
cas