Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
Módulo independiente KeyCloak WildFly MySQL

Estoy tratando de implementar un servidor WildFly KeyCloak en modo standalone . Esto funciona bien cuando simplemente no hago nada, pero ahora quiero agregar una Datasource de datos de MySQL .
Por lo tanto, tengo que agregar un controlador que estoy usando: mysql-connector-java-8.0.20.jar .
Para agregar el controlador, lo puse dentro de /modules/com/mysql/main/ . Luego agrego un archivo module.xml :

 <module xmlns="urn:jboss:module:1.1" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-8.0.20.jar"/> </resources> <dependencies> <module name="javax.api"> <module name="javax.transaction.api"/> </dependencies> </module>

Luego agrego lo siguiente en standalone.xml :

 <driver name="mysql" module="com.mysql"> <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class> </driver>

Cuando implemento el servidor con standalone.bat , aparece el siguiente error:

 16:57:43,962 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 32) WFLYCTL0013: Operation ("add") failed - address: ([ ("subsystem" => "datasources"), ("jdbc-driver" => "mysql") ]) - failure description: "WFLYJCA0041: Failed to load module for driver [com.mysql]"

Salud !!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Simplifica tu vida para que la próxima vez que hagas esto no sea manual. Cree un archivo que contenga algo como:

 embed-server --server-config=standalone.xml --std-out=echo batch # # remove the default provided datasource # /subsystem=datasources/data-source=KeycloakDS/:remove # # add the module # module add --name=com.mysql --resources=${user.home}/Downloads/mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar --dependencies=javax.api,javax.transaction.api # # create the driver # /subsystem=datasources/jdbc-driver=mysql:add(driver-name="mysql",driver-module-name="com.mysql",driver-class-name=com.mysql.cj.jdbc.MysqlXADataSource) # # create the datasource # /subsystem=datasources/data-source=KeycloakDS/:add(connection-url=jdbc:mysql://localhost:3306/keycloak,driver-name=mysql,jndi-name=java:jboss/datasources/KeycloakDS,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=keycloak,user-name=keycloak) run-batch

Ejecute esto con $KEYCLOAK_HOME/bin/jboss-cli.sh --file=<the_file_name> . Keyclock no se puede ejecutar cuando ejecuta este script. Y el usuario y la base de datos ya deben existir antes de reiniciar Keycloak.

Lo que esto hace es

  1. Eliminar la fuente de datos Keycloak "antigua"
  2. Instale el módulo. En el código anterior, deberá actualizar la ubicación del controlador MySQL.
  3. Vuelva a instalar la fuente de datos Keycloak con los parámetros correctos.

La ventaja es que esto es repetible si necesita instalarlo nuevamente o en un servidor diferente.

¿Y necesitas el controlador XA? Si estuviera desarrollando en Wildfly para mí mismo, podría necesitar XA, pero no creo que Keycloak lo aproveche.

over 4 years ago · Santiago Trujillo Denunciar

0

Prueba esto:

Coloque el conector en /standalone/deployments y luego vuelva a iniciar el servidor. Implementará y registrará el conector en el sistema.

A continuación, agregue esto a sus fuentes de datos standalone.xml.

 <datasource jndi-name="java:/jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true"> <connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&amp;characterEncoding=UTF-8&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=Africa/Luanda</connection-url> <driver>mysql</driver> <pool> <min-pool-size>5</min-pool-size> <max-pool-size>15</max-pool-size> </pool> <security> <user-name>usernameforthedb</user-name> <password>password</password> </security> <validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> <validate-on-match>true</validate-on-match> <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> </validation> </datasource>

Cambie su serverTimezone en consecuencia. Y, por seguridad, agregue la base de datos en mysql antes de iniciar el servidor.

Reinicie de nuevo.

PD, mantén esto donde está, por supuesto:

 <driver name="mysql" module="com.mysql"> <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class> </driver>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda