Подключение к Jboss 7 firebird

У меня проблемы с подключением к базе данных Firebird (драйвер jaybird) из JBoss 7.1.0 CR1

Это журнал:

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

Это автономный.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 выглядит так (все .jars, упомянутые в module.xml, находятся в папке ...\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.FBDriver и org.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, но я не знаю, какие.


person hrast    schedule 10.01.2012    source источник


Ответы (2)


org.firebirdsql.jdbc.FBDriver не является классом источника данных xa. Для этого элемента требуется имя реализации javax.sql.XADataSource в Jaybird, а не реализации java.sql.Driver.

В Jaybird 2.2 и выше реализация XADataSource — это org.firebirdsql.ds.FBXADataSource.

Реализация XADataSource в Jaybird 2.1.6 и более ранних версиях — 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)

person Mark Rotteveel    schedule 10.01.2012

Возможно, немного поздно, дело просто в том, что 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>

Это должно решить вашу проблему

person Rico Metzger    schedule 09.02.2012
comment
Jaybird 2.2 и выше совместимы с JDBC 4. - person Mark Rotteveel; 06.09.2019