Определение драйвера оракула jboss-eap-6.1 при установке в качестве развертывания

1

У меня есть несколько установок Jboss EAP 6.1, работающих с драйвером Oracle, установленным в качестве модуля.

Это стандартная конфигурация, которую я использую в standalone.xml:

<datasource jndi-name="java:jboss/fooDatasource" pool-name="java:jboss/fooDatasource" enabled="true" use-java-context="false" >
 <connection-url>jdbc:oracle:thin:@1.2.3.4:1527/SOMEDB.foo</connection-url>
 <driver>oracle</driver>
     <security>
         <user-name>xxxxx</user-name>
             <password>xxxxxxxxx</password>
     </security>
 [...]
</datasource>
<driver name="oracle" module="oracle.jdbc">
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
</driver>

Ojdbc6.jar находится в $ JBOSS_HOME/modules/system/layers/base/oracle/jdbc/main/вместе с соответствующим модулем.xml и все работает нормально.

Теперь клиенту требуется установить драйвер в качестве развертывания, поэтому я переместил ojdbc6.jar в $ JBOSS_HOME/standalone/deployments/, и я вижу из журналов, что он развернут без ошибок:

[org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010403: Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2)
INFO  [org.jboss.as.server] (ServerService Thread Pool -- 25) JBAS018559: Deployed "ojdbc6.jar" (runtime-name : "ojdbc6.jar")

Но я не знаю, как отредактировать свой файл standalone.xml, чтобы он снова работал: я попытался изменить атрибут "module" определения драйвера с несколькими разными значениями (ojdbc6.jar, deployment.ojdbc6.jar, oracle.jdbc.OracleDriver...), но ничто не похоже на "матч", и Jboss продолжает бросать ошибки при запуске:

ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 24) JBAS014613: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "oracle")
]) - failure description: "JBAS010441: Failed to load module for driver [ojdbc6.jar]"
[...]
INFO  [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
JBAS014775:    New missing/unsatisfied dependencies:
  service jboss.jdbc-driver.oracle (missing) dependents: [service jboss.driver-demander.java:jboss/spiDatasource, service jboss.data-source.java:jboss/fooDatasource]

Может ли кто-нибудь указать рабочий пример определения драйвера?

благодаря

Теги:
jdbc
jboss

3 ответа

6
Лучший ответ

Хорошо, я нашел ответ сам.

Удивительно, но все руководства, которые я нашел, объясняют, как сделать эту конфигурацию через веб-интерфейс администратора или через jboss-cli, но никто в сообществе Jboss, похоже, не объясняет, как вручную отредактировать файл standalone.xml, чтобы выполнить эту работу.

Это рабочий пример (в основном я просто удалил весь раздел определения драйвера Oracle и заменил имя драйвера в определении источника данных именем имени среды развернутого файла jar):

<datasource jta="false" jndi-name="java:/jdbc/fooDS" pool-name="foo-ds" use-ccm="false">
    <connection-url>jdbc:oracle:thin:@1.2.3.4:1527/SOMEDB.foo</connection-url>
    <driver-class>oracle.jdbc.OracleDriver</driver-class>
    <driver>ojdbc6.jar</driver>

    [...] other datasource stuff here

</datasource>

# DELETE FROM HERE...
<driver name="oracle" module="oracle.jdbc">
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
</driver>
# ...TO HERE

Все это.

-1
  1. Создание каталогов, таких как x1/x2/main
  2. Создать файл module.xml в основном каталоге
  3. Храните файл ojdbc6-11.1.1.3.0.jar в главном каталоге

В Module.xml

<module xmlns="urn:jboss:module:1.1" name="x1.x2">
<properties>
    <property name="jboss.api" value="unsupported"/>
</properties>
<resources>
    <resource-root path="ojdbc6-11.1.1.3.0.jar"/>
</resources>
<dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.servlet.api" optional="true"/>
</dependencies>

В domain.xml

<datasource jndi-name="java:/TestName" pool-name="TestName" enabled="true" use-java-context="true">
                    <connection-url>jdbc:oracle:thin:@ldap://xxxxx:3000/UKXXX,cn=OracleContext,dc=dcm,dc=XXXX</connection-url>
                    <driver>dps</driver>
                    <security>
                        <user-name>XXXXX</user-name>
                        <password>*****</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="dps" module="x1.x2">
                        <xa-datasource-class>oracle.jdbc.driver.OracleDriver</xa-datasource-class>
                    </driver>
                    </driver>
                </drivers>

Попытайтесь сохранить правильный барабан ojdbc, некоторые версии не будут работать :)

  • 0
    Я думаю, что вы не прочитали мой вопрос хорошо ... У меня уже была рабочая конфигурация модуля. Я спросил, как избавиться от этого и перейти на другой. Вопрос уже решен, кстати
-1

Вероятно, вы должны упомянуть таким образом...

<subsystem xmlns="urn:jboss:domain:datasources:1.1">
        <datasources>
            <datasource jndi-name="java:jboss/XXX" pool-name="XXX"     enabled="true" use-java-context="true">
                <connection-url>jdbc:oracle:thin:@SID:PORT:DBNAME</connection-url>
                <driver>oracle</driver>
                <security>
                    <user-name>user</user-name>
                    <password>password</password>
                </security>
            </datasource>
            <drivers>
                <driver name="oracle" module="com.oracle">
                    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
                </driver>
            </drivers>
        </datasources>
</subsystem>
  • 1
    Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любые посты .
  • 0
    Это решает ошибку водителя!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню