【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

相关推荐
王小磊学代码11 天前
每天一学(2)
线程池·cas·阻塞队列
他叫阿来1 个月前
CAS操作
cas·原子性·aba问题
慕木兮人可1 个月前
SpringBoot2.0.x旧版集成Swagger UI报错Unable to infer base url...解决办法
java·spring boot·cas·springsecurity·swagger-ui
Hello-Brand3 个月前
高并发下的数据一致性保障(图文全面总结)
分布式·高并发·分布式锁·cas·一致性·aba
星月IWJ4 个月前
cas_ssl
cas
八了个戒5 个月前
单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」
前端·javascript·cas·大前端·sso
若明天不见6 个月前
【多线程与高并发 四】CAS、Unsafe 及 JUC 原子类详解
java·cas·juc·unsafe·atomic原子类
Hello-Brand7 个月前
Java核心知识体系8:Java如何保证线程安全性
java·cas·并发编程·线程安全性·synchronized·nocas·volatile·final·多线程模型·case
玛卡巴咖9 个月前
CAS详解和学透面试必问并发安全问题
职场和发展·并发·cas
不能再留遗憾了9 个月前
【JavaEE】CAS(Compare And Swap)操作
java·java-ee·cas