【问题标题】:Jboss 7 firebird connectionJboss 7 火鸟连接
【发布时间】:2012-02-06 22:03:43
【问题描述】:

我无法从 JBoss 7.1.0 CR1 连接到 Firebird 数据库(jaybird 驱动程序)

这是日志:

JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.firebirdsql (missing) dependents: [service jboss.data-source.java:/tiranDS] 

这是standalone.xml

这是我的standalone.xml [某些部分已更改,例如 ...(some_path)...]

...

  <subsystem xmlns="urn:jboss:domain:datasources:1.0">
            <datasources>
                <datasource jndi-name="java:/tiranDS" pool-name="TiranPool" enabled="true" jta="true" use-java-context="true" use-ccm="true">
                    <connection-url>
                        jdbc:firebirdsql:serversp/3050:C:\Program Files\...(some_path)...\tiran.gdb
                    </connection-url>
                    <driver>
                        firebirdsql
                    </driver>
                    <pool>
                        <prefill>
                            false
                        </prefill>
                        <use-strict-min>
                            false
                        </use-strict-min>
                        <flush-strategy>
                            FailingConnectionOnly
                        </flush-strategy>
                    </pool>
                    <security>
                        <user-name>
                            username
                        </user-name>
                        <password>
                            pass
                        </password>
                    </security>
                </datasource>
                <drivers>
                   <driver name="firebirdsql" module="org.firebirdsql">
                        <xa-datasource-class>
                            org.firebirdsql.jdbc.FBDriver
                        </xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
...

module.xml 看起来像这样(module.xml 中提到的所有 .jar 都在 ...\jboss-as-7.1.0.CR1b\modules\org\firebirdsql\main 文件夹中)

<module xmlns="urn:jboss:module:1.0" name="org.firebirdsql">
    <resources>
        <resource-root path="jaybird-full-2.1.6.jar"/>
        <resource-root path="jaybird-pool-2.1.6.jar"/>
        <resource-root path="log4j-1.2.13.jar"/>
        <resource-root path="jboss-javaee.jar"/>
        <resource-root path="jmxri.jar"/>
        <resource-root path="jmxtools.jar"/>
        <resource-root path="sax2.jar"/>

        <resource-root path="commons-logging-1.1.jar"/>
        <resource-root path="junit-3.8.1.jar"/>

    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.activation.api"/>
        <module name="javax.xml.soap.api"/>
        <module name="javax.servlet.api"/>
        <module name="org.jboss.common-core"/>
        <module name="org.jboss.logging"/>
        <module name="javax.mail.api"/>


        <module name="org.apache.log4j"/>               
        <module name="org.jboss.logmanager.log4j"/>
        <module name="org.apache.james.mime4j"/>
        <module name="org.apache.commons.codec"/>
        <module name="org.apache.commons.collections"/>
        <module name="org.apache.commons.io"/>
        <module name="org.apache.commons.lang"/>
        <module name="org.apache.commons.logging"/>
        <module name="org.apache.httpcomponents"/>
        <module name="org.apache.xalan"/>
        <module name="org.apache.xerces"/>
        <module name="org.w3c.css.sac"/>
        <module name="net.sourceforge.cssparser"/>
        <module name="net.sourceforge.nekohtml"/>
    </dependencies>
</module>

这里有什么问题?


具有此驱动程序类的应用程序在 JBoss 5 上工作,但我尝试了 org.firebirdsql.jdbc.FBDriverorg.firebirdsql.pool.FBConnectionPoolDataSource 两个类仍然没有变化。

另外,我尝试使用 jaybird-2.1.6.jar 而不是 jaybird-full-2.1.6.jar 但错误仍然相同。

JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.firebirdsql (missing) dependents: [service jboss.data-source.java:/tiranDS] 

虽然我确信你所说的一切都是真的,但在上面提到的所有这些之前的问题似乎是我在 module.xml 中缺少一些依赖项,但我不知道。

【问题讨论】:

    标签: java jboss jboss7.x firebird jaybird


    【解决方案1】:

    org.firebirdsql.jdbc.FBDriver 不是 xa-datasource-class。此元素需要 Jaybird 中的 javax.sql.XADataSource 实现的名称,而不是 java.sql.Driver 实现的名称。

    在 Jaybird 2.2 及更高版本中,XADataSource 实现为 org.firebirdsql.ds.FBXADataSource

    Jaybird 2.1.6 及更早版本中的XADataSource 实现是org.firebirdsql.pool.FBConnectionPoolDataSource(另见http://web.firebirdsql.org/devel/doc/jaybird/pdf/jaybird_manual.pdf);此类已在 Jaybird 2.2 中弃用,并在 Jaybird 3 中删除。

    据我所知,JBoss 实际上包含一个使用 Firebird 的示例。 (但那可能是较早的版本)。

    顺便说一句:从应用程序服务器使用时,您不应使用 jaybird-full-2.1.6.jar 文件,而应使用 jaybird-2.1.6.jar(因为前者包含一些(较旧的)已包含的 JavaEE 接口在 JBoss 中)

    【讨论】:

      【解决方案2】:

      也许有点晚了,关键是 Firebird 并不是真正的 JDBC 4,所以你必须自己将驱动程序类添加到配置中,如下所示:

      <driver name="firebirdsql" module="org.firebirdsql">
        <driver-class>org.firebirdsql.jdbc.FBDriver</driver-class>
        <xa-datasource-class>org.firebirdsql.pool.FBConnectionPoolDataSource</xa-datasource-class>
      </driver>
      

      应该可以解决你的问题

      【讨论】:

      • Jaybird 2.2 及更高版本与 JDBC 4 兼容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多