2

我正忙于从 JBoss 7.1.1 升级到 Wildfly 8.0.0.Beta1。我在 JBoss 下使用 JTDS 数据库驱动程序没有问题,但它在 WildFly 下不起作用。

我在我的 WildFly 安装中创建了/net/sourceforge/jtds/main/文件夹结构并添加了文件,但 Wildfly 似乎没有选择它。modulesmodule.xml

我也试过这个/modules/system/layers/base/文件夹,因为这是 WildFly 下的一个新文件夹,但这也不起作用,我也下载了最新的 JTDS .JAR 文件。

我启动 Wildfly 时遇到的错误是:

ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "SCI_ODS_sql2")
]) - failure description: {"JBAS014771: Services with missing/unavailable dependencies" => [
    "jboss.data-source.java:jboss/datasources/SCI_ODS is missing [jboss.jdbc-driver.JTDS]",
    "jboss.driver-demander.java:jboss/datasources/SCI_ODS is missing [jboss.jdbc-driver.JTDS]"
]}
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "SCI_ODS_sql2")
]) - failure description: {
    "JBAS014771: Services with missing/unavailable dependencies" => [
        "jboss.data-source.java:jboss/datasources/SCI_ODS is missing [jboss.jdbc-driver.JTDS]",
        "jboss.driver-demander.java:jboss/datasources/SCI_ODS is missing [jboss.jdbc-driver.JTDS]"
    ],
    "JBAS014879: One or more services were unable to start due to one or more indirect dependencies not being available." => {
        "Services that were unable to start:" => [
            "jboss.data-source.reference-factory.SCI_ODS_sql2",
            "jboss.naming.context.java.jboss.datasources.SCI_ODS"
        ],
        "Services that may be the cause:" => ["jboss.jdbc-driver.JTDS"]
    }
}

如果我运行/subsystem=datasources:installed-drivers-listuon jboss-cli.sh,它只会显示默认安装的 h2 驱动程序,而不是 JTDS 驱动程序。

4

2 回答 2

4

我没有standalone.xml正确设置驱动程序。我说服自己我已经做到了。添加:

 <driver name="JTDS" module="net.sourceforge.jtds">
    <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
    <xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
 </driver>
于 2013-11-25T11:18:20.193 回答
3

首先,停止 WildFly 服务器。

然后更新standalone.xml 文件以添加MS-SQL JTDS 驱动程序详细信息和数据源详细信息,如下所示:

<subsystem xmlns="urn:jboss:domain:datasources:4.0">
            <datasources>
                <datasource jta="true" jndi-name="java:/jdbc/speedtest-datasource" pool-name="MSSQLDSspeedTestDEV" enabled="true" use-ccm="true">
                    <connection-url>jdbc:jtds:sqlserver://serverName:1433;DatabaseName=dbName</connection-url>
                    <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
                    <driver>JTDS</driver>
                    <security>
                        <user-name>username</user-name>
                        <password>password</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
                        <background-validation>true</background-validation>
                    </validation>
                </datasource>
                <drivers>

                    <driver name="JTDS" module="net.sourceforge">
                        <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
                    </driver>

                </drivers>
            </datasources>
        </subsystem>

MS SQL JTDS 的 Module.xml:路径:E:\Softwares\wildfly-10.1.0.Final\wildfly-10.1.0.Final\modules\system\layers\base\net\sourceforge\main (需要创建目录结构如突出显示并添加 module.xml 和 jtds-1.3.0.jar 文件)。

(请注意,在此示例中,我使用模块名称作为“net.sourceforge”并将文件夹结构路径创建为“net\sourceforge\main”)。请注意,这对于匹配 module、xml 文件中的目录路径和模块名称更为重要。

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="net.sourceforge">
<resources>
<resource-root path="jtds-1.3.0.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

注意:请注意上面2处绿色高亮的路径要匹配(即module.xml中的目录结构和模块名),

例如。如果您已将目录结构创建为 E:\Softwares\wildfly-10.1.0.Final\wildfly-10.1.0.Final\modules\system\layers\base\net\sourceforge\jtds\main 那么 module.xml 中的模块名称文件应为“net.sourceforge.jtds”,如下所示的 module.xml 文件

Module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="net.sourceforge.jtds">
<resources>
<resource-root path="jtds-1.3.0.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

现在保存这两个文件并重新启动 wildFLY 服务器。

于 2017-02-23T22:06:29.300 回答