我在从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>
我怎么了?
具有该驱动程序类的应用程序在JBoss5上运行,但我已经尝试了org.firebirdsql.jdbc.FBDriver
和org.firebirdsql.pool.FBConnectionPoolDataSource
两个类,但仍然没有更改。
此外,我试着放jaybird-2.11.6.jar而不是jaybirt-full-2.1.6.jar,但错误仍然是一样的。
JBAS014775: New missing/unsatisfied dependencies:
service jboss.jdbc-driver.firebirdsql (missing) dependents: [service jboss.data-source.java:/tiranDS]
虽然我确信你所说的Mark都是真的,但在上面提到的所有这些之前,问题似乎是我在module.xml中缺少了一些依赖项,但我不知道它是什么。
org.firebirdsql.jdbc.FBDriver
不是xa数据源类。这个元素需要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中被弃用,在Jaybird3中被删除。
据我所知,JBoss实际上包含了一个使用Firebird的示例。(但那可能是早期版本)。
BTW:在应用程序服务器上使用时,您不应该使用jaybird-full-2.1.6.jar文件,而应该使用jaybird-2.11.6.jar(因为前者包括一些(旧的)JavaEE接口,这些接口已经包含在JBoss中)
也许有点晚了,关键是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>
这应该可以解决您的问题