Extensión Keycloak con dependencias

Estoy creando una extensión Keycloak con dependencias. Agregué la entrada de la pom.xmlsiguiente manera:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20160810</version>
</dependency>

Luego lo implementé en Keycloak:

mvn clean install wildfly:deploy

Pero cuando lo ejecuto, recibí el error:

org.jboss.resteasy.spi.UnhandledException: java.lang.NoClassDefFoundError: org/json/JSONObject
Caused by: java.lang.NoClassDefFoundError: org/json/JSONObject
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject from [Module "deployment.keycloak-authenticator.jar" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 66 more

¿Cómo agregar dependencias a extensiones en Keycloak?

Respuesta 1

Debe crear sus dependencias SPI como módulos jboss .

Pasos:

  1. Agregue un archivo jboss-deploy-structure.xml en el directorio src / main / resources / META-INF o su SPI con algo como esto ( documentación oficial ):

    <jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.json.json" />
        </dependencies>
    </deployment>
    </jboss-deployment-structure>
    
  2. Haga $ KEYCLOAK_HOME / modules / system / layers / base / org / json / json / main directory

  3. Agregue json-20160810-javadoc.jar en el directorio creado
  4. Agregue un archivo module.xml en el mismo directorio con este contenido:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <module xmlns="urn:jboss:module:1.5" name="org.json.json">
        <properties>
            <property name="jboss.api" value="private"/>
        </properties>
    
        <resources>
            <resource-root path="json-20160810-javadoc.jar"/>
        </resources>
    
        <dependencies>
        </dependencies>
    </module>
    
  5. Compila tu SPI

  6. Reiniciar keycloak
  7. Vuelva a implementar su SPI
Respuesta: 2

Hola, necesito convertir Mongo Document a DBObject (BasicDBObject). Estoy cargando un archivo a mongo usando GridFS y quiero establecer metadatos, que obtengo en el documento. Sé que Document es más o menos el ...

Tengo una ArrayList <Metadata> y quiero saber si hay una API Java para trabajar con archivos CSV que tenga un método de escritura que acepte una ArrayList <> como parámetro similar a LinqToCsv en ...

Posible duplicado: JSF 2: ¿cómo puedo obtener un valor de parámetro de contexto de web.xml usando JSF EL? Estaba acostumbrado a recuperar parámetros de contexto usando EL de esta manera $ {applicationScope.configs ...

Leí este documento explicando la memoria caché de guayaba: Caches explicadas. Entiendo lo que están haciendo refreshAfterWrite y expireAfterWrite. Sin embargo, al explicar refreshAfterWrite, el documento también ...