中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

keycloak~為keycloak-services項目添(tian)加第三方(fang)模塊(首(shou)創(chuang))

我們在對keycloak框架中的核心項目keycloak-services進(jin)行二次開(kai)發過程中(zhong),發現了一個問(wen)題(ti),當時有(you)這種需(xu)求,在keycloak-services中(zhong)需(xu)要(yao)使用infinispan緩存,我(wo)(wo)們(men)直接添加infinispan-core引用之后,在啟動keycloak進(jin)出錯(cuo)了,提示我(wo)(wo)們(men)沒有(you)找到infinispan.Cache,于(yu)是我(wo)(wo)嘗試(shi)了如下方(fang)法(fa),最終解(jie)決了問(wen)題(ti)。

問題解決的思路與嘗試

  1. 【失敗】使用maven-jar-plugin插件,添加依賴項,為META-INF/MANIFEST.MF添加dependencies節點
      <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-core</artifactId>
            <scope>provided</scope>
        </dependency>
...
...
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
              <archive>
                  <manifestEntries>
                      <Dependencies>org.infinispan,org.infinispan.jboss-marshalling</Dependencies>
                  </manifestEntries>
              </archive>
          </configuration>
      </plugin>
  1. 【失敗】使用maven-shade-plugin插件,在生產keycloak-services包時,直接把org.infinispan打到包里
  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <configuration>
          <artifactSet>
              <includes>
                  <include>org.infinispan:*</include>
              </includes>
          </artifactSet>
          <promoteTransitiveDependencies>true</promoteTransitiveDependencies>&lt;!&ndash; 是否打包間接依賴 &ndash;&gt;

      </configuration>
      <executions>
          <execution>
              <phase>package</phase>
              <goals>
                  <goal>shade</goal>
              </goals>
          </execution>
      </executions>
  </plugin>

上面shade包打完之后(hou),啟動出現了發現”兩個(ge)相(xiang)同名稱的類“,這時我知道,keycloak的jboss容器(qi)已經(jing)有一個(ge)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節點下添加依賴,如<module name="org.infinispan"/>

  2. 修改Dockerfile文件,將這個module.xml文件也復制到上面的容器目錄,覆蓋原來的文件

  3. 重新構(gou)建鏡像,啟動容器,問題解決

posted @ 2023-10-30 13:38  張占嶺  閱讀(634)  評論(0)    收藏  舉報