KeyCloak WildFly 独立模块 MySQL
KeyCloak WildFly Standlone module MySQL
我正在尝试在 standalone
模式下部署 WildFly KeyCloak 服务器。当我什么都不做但现在我想添加 MySQL
.
的 Datasource
时,这很好用
因此我必须添加我正在使用的驱动程序:mysql-connector-java-8.0.20.jar
.
要添加驱动程序,我将其放在 /modules/com/mysql/main/
中。然后我添加一个 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>
然后我在standalone.xml
中添加以下内容:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
当我使用 standalone.bat
部署服务器时,出现以下错误:
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]"
干杯!!
试试这个:
将连接器放入 /standalone/deployments 然后重新启动服务器。它将在系统中部署和注册连接器。
接下来将此添加到您的 standalone.xml 数据源。
<datasource jndi-name="java:/jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true">
<connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&characterEncoding=UTF-8&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&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>
相应地更改您的服务器时区。并且,为了安全起见,在启动服务器之前在mysql中添加数据库。
重新启动。
P.S。保持这个当然:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
简化您的生活,这样您下一次这样做就不是手动的了。创建一个包含类似内容的文件:
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
运行 这与 $KEYCLOAK_HOME/bin/jboss-cli.sh --file=<the_file_name>
。当您 运行 此脚本时,Keyclock 不能 运行ning。并且在重启Keycloak之前用户和数据库必须已经存在。
这样做的是
- 删除“旧的”Keycloak 数据源
- 安装模块。在上面的代码中,您需要更新 MySQL 驱动程序的位置。
- 使用正确的参数重新安装 Keycloak 数据源。
优点是如果您需要再次安装或安装到不同的服务器,这是可重复的。
您需要 XA 驱动程序吗?如果我自己在 Wildfly 中开发,我 可能 需要 XA,但我认为 Keycloak 不会利用它。
我正在尝试在 standalone
模式下部署 WildFly KeyCloak 服务器。当我什么都不做但现在我想添加 MySQL
.
的 Datasource
时,这很好用
因此我必须添加我正在使用的驱动程序:mysql-connector-java-8.0.20.jar
.
要添加驱动程序,我将其放在 /modules/com/mysql/main/
中。然后我添加一个 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>
然后我在standalone.xml
中添加以下内容:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
当我使用 standalone.bat
部署服务器时,出现以下错误:
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]"
干杯!!
试试这个:
将连接器放入 /standalone/deployments 然后重新启动服务器。它将在系统中部署和注册连接器。
接下来将此添加到您的 standalone.xml 数据源。
<datasource jndi-name="java:/jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true">
<connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&characterEncoding=UTF-8&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&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>
相应地更改您的服务器时区。并且,为了安全起见,在启动服务器之前在mysql中添加数据库。
重新启动。
P.S。保持这个当然:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
简化您的生活,这样您下一次这样做就不是手动的了。创建一个包含类似内容的文件:
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
运行 这与 $KEYCLOAK_HOME/bin/jboss-cli.sh --file=<the_file_name>
。当您 运行 此脚本时,Keyclock 不能 运行ning。并且在重启Keycloak之前用户和数据库必须已经存在。
这样做的是
- 删除“旧的”Keycloak 数据源
- 安装模块。在上面的代码中,您需要更新 MySQL 驱动程序的位置。
- 使用正确的参数重新安装 Keycloak 数据源。
优点是如果您需要再次安装或安装到不同的服务器,这是可重复的。
您需要 XA 驱动程序吗?如果我自己在 Wildfly 中开发,我 可能 需要 XA,但我认为 Keycloak 不会利用它。