【问题标题】:How to setup MariaDB JNDI on Wildfly 10?如何在 Wildfly 10 上设置 MariaDB JNDI?
【发布时间】:2017-02-13 13:26:00
【问题描述】:

我正在尝试将我的 Tomcat Web 服务移动到 Wildfly 10。我认为应该将它拖放到 Wildfly 的部署文件夹中,一切都应该没问题,但似乎不是这样。

这是我在 standalone.xml 中的 MariaDB 数据源定义:

<datasource jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS">
    <connection-url>jdbc:mariadb://db_ip/db_name</connection-url>
    <driver>mariadb</driver>
    <security>
        <user-name>dbAcc</user-name>
        <password>dbPassword</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
    </datasource>
    <drivers>
        <driver name="mariadb" module="org.mariadb">
            <driver-class>org.mariadb.jdbc.Driver</driver-class>
            <xa-datasource-class>org.mariadb.jdbc.MariaDbDataSource</xa-datasource-class>
        </driver>
    </drivers>

然后我将mariadb-java-client-1.4.6.jar和我的WAR文件放入wildfly/standalone/deployments,启动Wildfly,错误信息进入我的眼中:

07:05:21,137 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 60) WFLYUT0021: Registered web context: /MySV
07:05:21,143 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "MariaDBDS")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.mariadb"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
    "jboss.driver-demander.java:jboss/MariaDBDS is missing [jboss.jdbc-driver.mariadb]",
    "org.wildfly.data-source.MariaDBDS is missing [jboss.jdbc-driver.mariadb]"
]
}
07:05:21,148 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "MariaDBDS")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => [
    "jboss.jdbc-driver.mariadb",
    "jboss.jdbc-driver.mariadb"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
    "jboss.driver-demander.java:jboss/MariaDBDS is missing [jboss.jdbc-driver.mariadb]",
    "org.wildfly.data-source.MariaDBDS is missing [jboss.jdbc-driver.mariadb]",
    "org.wildfly.data-source.MariaDBDS is missing [jboss.jdbc-driver.mariadb]"
]
}

我无法让我的服务连接到数据库,我错过了任何步骤吗?

【问题讨论】:

    标签: java tomcat wildfly jndi


    【解决方案1】:

    如果我查看您的配置,您会将驱动程序设置为模块。因此,您将其创建为服务器中的模块,而不是将其部署为部署文件夹中的单独 jar。

    如果您想在驱动程序位于部署文件夹中的位置设置数据源,请执行以下操作:

    <datasource jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS">
        <connection-url>jdbc:mariadb://db_ip/db_name</connection-url>
        <driver>mariadb-java-client-1.4.6.jar</driver>
        <driver-class>org.mariadb.jdbc.Driver</driver-class>
        <security>
            <user-name>dbAcc</user-name>
            <password>dbPassword</password>
        </security>
        <validation>
            <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
            <validate-on-match>true</validate-on-match>
            <background-validation>false</background-validation>
            <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
        </validation>
    </datasource>
    

    不需要单独的驱动程序声明,它全部包含在数据源配置中。

    【讨论】:

    • 哇,它有效!但是我之前尝试过 Jboss EAP 6.4,当我将新的 JDBC 拖到它的部署文件夹中时,它会自动将 JDBC 部署到它所属的位置。 Wildfly 10 不是比 EAP 6.4 更先进吗??
    • 这可能是商业 EAP 版本附带的管理工具有所不同,我真的不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2019-02-23
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多