我们在对keycloak框架中的核心项目keycloak-services
进行二次开发过程中,发现了一个问题,当时有这种需求,在keycloak-services中需要使用infinispan缓存,我们直接添加infinispan-core引用之后,在启动keycloak进出错了,提示我们没有找到infinispan.Cache,于是我尝试了如下方法,最终解决了问题。
问题解决的思路与尝试
- 【失败】使用maven-jar-plugin插件,添加依赖项,为META-INF/MANIFEST.MF添加dependencies节点
org.infinispan
infinispan-core
provided
...
...
org.apache.maven.plugins
maven-jar-plugin
org.infinispan,org.infinispan.jboss-marshalling
- 【失败】使用maven-shade-plugin插件,在生产keycloak-services包时,直接把org.infinispan打到包里
org.apache.maven.plugins
maven-shade-plugin
3.2.4
org.infinispan:*
true<!– 是否打包间接依赖 –>
package
服务器托管网
shade
服务器托管网
上面shade包打完之后,启动出现了发现”两个相同名称的类“,这时我知道,keycloak的jboss容器已经有一个org.infinispan模块了,所以解决问题的关键在于,如何使用它提供的infinispan模块
- 【问题解决】 直接修改keycloak-services模块里的module.xml配置文件,即可实现,它的优先级更高,这也是为什么我在“1步“添加manifest未生效的原因所在
实现的具体步骤,在module.xml中,添加对应的模块即可
-
从keycloak容器里将/opt/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml复制出来,在文件的dependencies节点下添加依赖,如
-
修改Dockerfile文件,将这个module.xml文件也复制到上面的容器目录,覆盖原来的文件
-
重新构建镜像,启动容器,问题解决
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(三)
系列文章目录
Python 面试的高阶问题
Python Pandas 面试问题:待更新系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦…