WildflyでMySQLにアクセスするアプリケーションをデプロイしたところ下記のようなエラーが発生しました。
$ sudo /opt/wildfly/bin/./jboss-cli.sh -c --command='deploy /home/ec2-user/app.war' WFLYCTL0063: Composite operation was rolled back
エラーを確認したところMySQLのドライバーを読取るところでエラーが発生していました。
14:41:57,930 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([ ("subsystem" => "datasources"), ("data-source" => "DS") ]) - failure description: { "WFLYCTL0412: Required services that are not installed:" => [ "jboss.jdbc-driver.mysql", "jboss.jdbc-driver.mysql" ], "WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.driver-demander.java:jboss/datasources/DS is missing [jboss.jdbc-driver.mysql]", "org.wildfly.data-source.DS is missing [jboss.jdbc-driver.mysql]", "org.wildfly.data-source.DS is missing [jboss.jdbc-driver.mysql]" ] }
調べてみるとWildflyにモジュールを追加する際にはmodule.xmlを記述する必要があるようでした。
なので、jarを配置したフォルダと同じ場所にmodule.xmlを作成しました。
$ vi /opt/wildfly/modules/system/layers/base/com/mysql/main/module.xml
<module name="com.mysql" xmlns="urn:jboss:module:1.5"> <resources> <resource-root path="mysql-connector-java-5.1.39-bin.jar"> </resource-root></resources> <dependencies> <module name="javax.api"> <module name="javax.transaction.api"> </module></module></dependencies> </module>
再度デプロイしたらエラーが解消されました。
このmodule.xmlはwildflyからの仕様でJbossの時は不要でした。