Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

136
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!