Erlo

keycloak~为keycloak-services项目添加第三方模块(首创)

2023-10-30 14:00:10 发布   96 浏览  
页面报错/反馈
收藏 点赞

我们在对keycloak框架中的核心项目keycloak-services进行二次开发过程中,发现了一个问题,当时有这种需求,在keycloak-services中需要使用infinispan缓存,我们直接添加infinispan-core引用之后,在启动keycloak进出错了,提示我们没有找到infinispan.Cache,于是我尝试了如下方法,最终解决了问题。

问题解决的思路与尝试

  1. 【失败】使用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
                  
              
          
      
  1. 【失败】使用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模块

  1. 【问题解决】 直接修改keycloak-services模块里的module.xml配置文件,即可实现,它的优先级更高,这也是为什么我在“1步“添加manifest未生效的原因所在

实现的具体步骤,在module.xml中,添加对应的模块即可

  1. 从keycloak容器里将/opt/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml复制出来,在文件的dependencies节点下添加依赖,如

  2. 修改Dockerfile文件,将这个module.xml文件也复制到上面的容器目录,覆盖原来的文件

  3. 重新构建镜像,启动容器,问题解决

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认