У меня есть несколько установок 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]
Может ли кто-нибудь указать рабочий пример определения драйвера?
благодаря
Хорошо, я нашел ответ сам.
Удивительно, но все руководства, которые я нашел, объясняют, как сделать эту конфигурацию через веб-интерфейс администратора или через 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
Все это.
В 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, некоторые версии не будут работать :)
Вероятно, вы должны упомянуть таким образом...
<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>