CLOVER🍀

That was when it all began.

WildFlyにMySQL DataSourceを、JDBCドライバをデプロイして作成する

WildFlyJDBCドライバをデプロイしたうえで、DataSourceを作成したことがなかったのでメモ。

今までは、いつもカスタムモジュールとしてインストールしていました。

今回の対象は、WildFly 8.2.0.Final、MySQLJDBCドライバのバージョンは5.1.35)とします。あと、作るのは非XA DataSourceです。

WildFlyを起動。

$ wildfly-8.2.0.Final/bin/standalone.sh

管理CLIに接続。

$ wildfly-8.2.0.Final/bin/jboss-cli.sh -c
[standalone@localhost:9990 /]

JDBCドライバをデプロイ。

[standalone@localhost:9990 /] deploy /path/to/mysql-connector-java-5.1.35-bin.jar

確認。

[standalone@localhost:9990 /] jdbc-driver-info
NAME                                                                            SOURCE                                                                          
h2                                                                              com.h2database.h2/main                                                          
mysql-connector-java-5.1.35-bin.jar_com.mysql.fabric.jdbc.FabricMySQLDriver_5_1 mysql-connector-java-5.1.35-bin.jar_com.mysql.fabric.jdbc.FabricMySQLDriver_5_1 
mysql-connector-java-5.1.35-bin.jar_com.mysql.jdbc.Driver_5_1                   mysql-connector-java-5.1.35-bin.jar_com.mysql.jdbc.Driver_5_1

なんか、MySQLっぽいものがいろいろいます。

DataSource追加。

[standalone@localhost:9990 /] data-source add --name=MysqlDs --jndi-name=java:jboss/datasources/MysqlDs --user-name=kazuhira --password=password --driver-name=mysql-connector-java-5.1.35-bin.jar_com.mysql.jdbc.Driver_5_1 --connection-url=jdbc:mysql://localhost:3306/practice?useUnicode=true&characterEncoding=utf-8&characterSetResults=utf-8&useServerPrepStmts=true&useLocalSessionState=true&elideSetAutoCommits=true&alwaysSendSetIsolation=false

確認。

[standalone@localhost:9990 /] cd subsystem=datasources/data-source=MysqlDs
[standalone@localhost:9990 data-source=MysqlDs] :read-resource
{
    "outcome" => "success",
    "result" => {
        "allocation-retry" => undefined,
        "allocation-retry-wait-millis" => undefined,
        "allow-multiple-users" => false,
        "background-validation" => undefined,
        "background-validation-millis" => undefined,
        "blocking-timeout-wait-millis" => undefined,
        "capacity-decrementer-class" => undefined,
        "capacity-decrementer-properties" => undefined,
        "capacity-incrementer-class" => undefined,
        "capacity-incrementer-properties" => undefined,
        "check-valid-connection-sql" => undefined,
        "connection-listener-class" => undefined,
        "connection-listener-property" => undefined,
        "connection-properties" => undefined,
        "connection-url" => "jdbc:mysql://localhost:3306/practice?useUnicode=true&characterEncoding=utf-8&characterSetResults=utf-8&useServerPrepStmts=true&useLocalSessionState=true&elideSetAutoCommits=true&alwaysSendSetIsolation=false",
        "datasource-class" => undefined,
        "driver-class" => undefined,
        "driver-name" => "mysql-connector-java-5.1.35-bin.jar_com.mysql.jdbc.Driver_5_1",
        "enabled" => true,
        "exception-sorter-class-name" => undefined,
        "exception-sorter-properties" => undefined,
        "flush-strategy" => undefined,
        "idle-timeout-minutes" => undefined,
        "initial-pool-size" => undefined,
        "jndi-name" => "java:jboss/datasources/MysqlDs",
        "jta" => true,
        "max-pool-size" => undefined,
        "min-pool-size" => undefined,
        "new-connection-sql" => undefined,
        "password" => "password",
        "pool-prefill" => undefined,
        "pool-use-strict-min" => undefined,
        "prepared-statements-cache-size" => undefined,
        "query-timeout" => undefined,
        "reauth-plugin-class-name" => undefined,
        "reauth-plugin-properties" => undefined,
        "security-domain" => undefined,
        "set-tx-query-timeout" => false,
        "share-prepared-statements" => false,
        "spy" => false,
        "stale-connection-checker-class-name" => undefined,
        "stale-connection-checker-properties" => undefined,
        "track-statements" => "NOWARN",
        "transaction-isolation" => undefined,
        "url-delimiter" => undefined,
        "url-selector-strategy-class-name" => undefined,
        "use-ccm" => true,
        "use-fast-fail" => false,
        "use-java-context" => true,
        "use-try-lock" => undefined,
        "user-name" => "kazuhira",
        "valid-connection-checker-class-name" => undefined,
        "valid-connection-checker-properties" => undefined,
        "validate-on-match" => false,
        "statistics" => {
            "jdbc" => undefined,
            "pool" => undefined
        }
    }
}

接続のテスト。

[standalone@localhost:9990 data-source=MysqlDs] /subsystem=datasources/data-source=MysqlDs:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}

設定変更。

[standalone@localhost:9990 data-source=MysqlDs] /subsystem=datasources/data-source=MysqlDs:write-attribute(name=min-pool-size, value=5)
{"outcome" => "success"}
[standalone@localhost:9990 data-source=MysqlDs] reload

作成したデータソースの削除。

[standalone@localhost:9990 data-source=MysqlDs] /subsystem=datasources/data-source=MysqlDs:remove()
{"outcome" => "success"}

こんなところでしょう。

オマケ)
そういえばJDBCドライバのクラス名って、META-INF/servicesを見るのがよいですね。

$ unzip -p mysql-connector-java-5.1.35-bin.jar META-INF/services/java.sql.Driver
com.mysql.jdbc.Driver

当たり前といえば、当たり前ですが…。