【问题标题】:Db2 Driver/Datasource setup on wildfly: Failed to load module for driver [com.ibm]Wildfly 上的 Db2 驱动程序/数据源设置:无法为驱动程序加载模块 [com.ibm]
【发布时间】:2014-07-23 06:31:54
【问题描述】:

我想在 Wildfly 服务器(Wildfly.8.0.0-Final 和 8.1.0 也一样)上为 db2 配置数据源,但这样做时遇到了一些问题。

我的研究告诉我这是一个两步过程

  1. 将驱动程序作为模块安装在 %JBOSS_HOME%/modules/com/ibm/main 目录中。
  2. 配置数据源子系统以将此模块作为驱动程序包含在您的连接设置中。

到目前为止,我已经使用以下 module.xml 在以下结构下安装了模块:

modules/
`-- com/
    `-- ibm/
        `-- main/
            |-- db2jcc4.jar
            |-- db2jcc_license_cu.jar
            |-- db2jcc_license_cisuz.jar
            `-- module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.ibm">
    <resources>
        <resource-root path="db2jcc4.jar"/>
        <resource-root path="db2jcc_license_cu.jar"/>
        <resource-root path="db2jcc_license_cisuz.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="sun.jdk"/>
    </dependencies>
</module>

xml 文件中&lt;?...?&gt; 之前没有空格。模块名称为“com.ibm”,数据源如下:

<subsystem xmlns="urn:jboss:domain:datasources:2.0">
    <datasources>
        <datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS" enabled="true" use-java-context="true">
            <xa-datasource-property name="ServerName">myIP</xa-datasource-property>
            <xa-datasource-property name="PortNumber">1234</xa-datasource-property>
            <xa-datasource-property name="DatabaseName">MyDB</xa-datasource-property>
            <xa-datasource-property name="DriverType">4</xa-datasource-property>
            <driver>ibmdb2</driver>
            <pool>
                <min-pool-size>0</min-pool-size>
                <max-pool-size>50</max-pool-size>
            </pool>
            <security>
                <user-name>bob</user-name>
                <password>isyouruncle</password>
            </security>
            <validation>
                <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
                <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
                <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
            </validation>
        </datasource>
        <drivers>
            <driver name="ibmdb2" module="com.ibm">
                <xa-datasource-class>com.ibm.db2.jcc.DB2XADatasource</xa-datasource-class>
            </driver>
        </drivers>
    </datasources>
</subsystem>

加载服务器会产生这个错误:

12:49:01,228 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 9) JBAS014613: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("jdbc-driver" => "ibmdb2")
]) - failure description: "JBAS010441: Failed to load module for driver [com.ibm]"

这反过来又导致我的数据源声明由于缺少驱动程序而无法加载。

我使用older documentation 作为指南,因为似乎还没有任何可用于wildfly 的。 this documentation 显示了一些承诺,但似乎有点过时了。如果有人有任何设置这方面的经验,那么您的帮助将不胜感激。

我想连接到 DB2 9.7

请,谢谢。

【问题讨论】:

  • 日志是怎么说的?
  • 日志没有帮助,我尝试将级别设置为 Debug 并且所有关于驱动程序的信息与我在上面提供的信息相同 (Failed to load module for driver)
  • 这是 WildFly 8.0 还是 8.1? (Q 说 8.0,但下面的评论说是 8.1)
  • 原来是8.0,现在升级到8.1了。
  • 你解决了吗?如果有,怎么做?

标签: jdbc db2 wildfly


【解决方案1】:

尝试替换:

<resources-root path="db2jcc4.jar"/> <resources-root path="db2jcc_license_cu.jar"/> <resources-root path="db2jcc_license_cisuz.jar"/>

通过

<resource-root path="db2jcc4.jar"/> <resource-root path="db2jcc_license_cu.jar"/> <resource-root path="db2jcc_license_cisuz.jar"/>

从资源路由中删除 s!

【讨论】:

  • 我进行了更改,但我仍然收到消息 :(
  • 很抱歉花了很多时间才回复您?你解决了这个问题吗?如果没有,请给我更多信息。您使用的是什么 IDE(解决方案可能是插件配置?
  • Wildfly 8.0 出现了一些bug,你切换到wildfly 8.1 了吗?有一个文档:docs.jboss.org/author/display/WFLY8/…。替换为您的 ibm 驱动程序。
  • 不幸的是,我使用的是 Wildfly 8.1 :(,根据文档,我的配置也是正确的。
  • 根据您的帖子,一切正常。我看不出它不起作用的任何原因。该消息意味着它没有找到该模块。我已经像这样配置了 MySQL(没有 sun.jdk 模块),它现在正在工作。查看是否存在 sun.jdk 模块。还要确保standalone.bat、standalone.xml(或域)在相同的%JBOSS_HOME% 下。我看不出有任何其他原因无法正常工作。
【解决方案2】:

您可以尝试启用jboss.jdbc.spy = TRACE 并将spy="true" 添加到数据源。

<datasource jndi-name="..." ... spy="true">

<logger category="jboss.jdbc.spy">
  <level name="TRACE"/>
</logger>

这通常是为了调试 JDBC,但也许它也更多地显示在驱动程序的加载上。 此外,您肯定需要 resource-root 而没有 s

【讨论】:

  • 我试过了,但它似乎没有产生任何新的调试信息...我在日志中看不到 TRACE 或 DEBUG 消息,仍然是与往常一样的 INFO 和 ERROR 消息。
【解决方案3】:

我有同样的问题。我通过从 module.xml 中删除这两行来解决它:

<resource-root path="db2jcc_license_cu.jar"/>
<resource-root path="db2jcc_license_cisuz.jar"/>

我没有具体解释为什么会这样。

【讨论】:

  • 也为我工作
【解决方案4】:

这不是您的问题的解决方案,而是供未来访问者(像我一样)通过搜索相同的错误消息来解决此问题的参考:

今天我遇到了同样的问题,对我来说这是module.xmlstandalone-full.xml 的错误。在这两种情况下,模块名称都是com.ibm.main,但它应该是com.ibm

简而言之:如果您遇到此消息并且仔细检查配置文件没有帮助,请重写它们。

【讨论】:

  • 就是这样!我有 com.ibm.db2,在standalone.xml 中,但模块在 com.ibm
【解决方案5】:

模块主文件夹中的jar文件应该添加到module.xml中

<resources>
    <resource-root path="db2jcc4.jar"/>
    <resource-root path="db2jcc_license_cu.jar"/>
</resources>

如果您使用的是 db2jcc.jar 而不是 db2jcc4.jar 并且在定义标准(非 XA)数据源时,可能有助于加快驱动类也是。

<driver-class>com.ibm.db2.jcc.DB2Driver</driver-class>

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 2016-03-08
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多