I'm having some trouble adding a MySQL data source to WildFly. I've installed (perhaps incorrectly?) the MySQL driver as shown below:
Then, when I go to add the data source, MySQL is missing from the list of available driver names:
I suspect I must have installed the driver incorrectly as the driver version is missing from my first screenshot, and nothing is shown under JDBC compliant. Not sure if this is normal.
I have followed a number of guides to install the driver, and this is how I have done it. I downloaded the driver from https://dev.mysql.com/downloads/connector/j/. The driver is located in the following file path:
wildfly-22.0.0.Final\modules\system\layers\base\com\mysql\main
and this is what that folder structure looks like:
This is the contents of module.xml:
<module name="com.mysql" xmlns="urn:jboss:module:1.5">
<resources>
<resource-root path="mysql-connector-java-8.0.23.jar">
</resource-root></resources>
<dependencies>
<module name="javax.api">
<module name="javax.transaction.api">
</module></module></dependencies>
</module>
This is what the relevant driver section in standalone.xml looks like (including the h2 and derby-main drivers which seem to work fine):
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="derby-mem" module="org.apache.derby.mem"/>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
</driver>
</drivers>
I must be missing something obvious here.
I would strongly recommend using a script for this instead of the UI. It is easier to maintain and upgrade.
Create a file called something like create_resources.cli
that contains:
embed-server --server-config=standalone.xml --std-out=echo
batch
#
# add the module
#
module add --name=com.mysql --resources=${user.home}/Downloads/mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.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.Driver)
#
# create the datasource
#
/subsystem=datasources/data-source=YourDSName/:add(connection-url=jdbc:mysql://localhost:3306/yourDBName,driver-name=mysql,jndi-name=java:jboss/datasources/YourDSName,password=thepassword,user-name=theuser)
run-batch
Now, with Wildfly stopped, change to the Wildfly installation directory and run
bin\jboss-cli.bat --file=create_resources.cli
This will do the following:
Downloads
directory in your home directory. Obviously it can be wherever you'd like.The advantage of this is that you don't need to run the UI to add the datasource. Additionally, I am constantly changing my Wildfly installation version and what is installed in a particular one. This way you can regenerate the changes very quickly.