Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

137
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda