Создание модуля соединения WildFly с СУБД Oracle

Для работы приложений развернутых на сервера WildFly с базой данных Oracle необходимо создать новый модуль, содержащий JDBC драйвер СУБД Oracle. Архив с драйвером можно загрузить с официального сайта Oracle.

При выборе файла с JDBC драйвером для СУБД Oracle, следует учитывать версию JDK, под которой работает сервер приложений WildFly и версию сервера базы данных Oracle. Ниже, приведены данные из таблицы с официального сайта Oracle для выбора соответствующего файла драйвера:

Oracle Database version  JDK Version supported JDBC specification compliance JDBC Jar files specific to the release
12.2 or 12cR2 JDK8 and JDBC 4.2 JDBC 4.2 in the JDK 8 ojdbc8.jar for JDK 8
12.1 or 12cR1 JDK8, JDK 7 & JDK 6 JDBC 4.1 in the JDK 8 & JDK 7 drivers
JDBC 4.0 in the JDK 6 drivers
ojdbc7.jar for JDK 8 and JDK 7
ojdbc6.jar for JDK 6
11.2 or 11gR2 JDK 6 & JDK 5
JDK 7 & JDK 8 supported in 11.2.0.3 and 11.2.0.4
JDBC 4.0 in the JDK 6 drivers 
JDBC 3.0 in the JDK 5 drivers
ojdbc6.jar for JDK 8, JDK 7 and JDK 6. 
ojdbc5.jar for JDK 5
11.1 or 11gR1 JDK 6 & JDK 5 JDBC 4.0 in the JDK 6 drivers       JDBC 3.0 in the JDK 5 drivers ojdbc6.jar for JDK 6
ojdbc5.jar for JDK 5

На примере JDBC драйвера для СУБД Oracle рассмотрим создание нескольких модулей на сервере приложений WildFly под различные версии базы данных. В нашем случае версия сервера приложений WildFly — 10 и работает работает он под управлением JDK 8. Согласно данных таблицы, на сервере можно использовать 3 версии библиотеки JDBC драйвера:

  • ojdbc8.jar — для Oracle 12.2
  • ojdbc7.jar — для Oracle 12.1
  • ojdbc6.jar — для Oracle 11.2

Будущие модули будут предназначены для работы с базами данных Oracle версий 11.2 и 12.1, таким образом с официального сайта Oracle необходимо загрузить два файла: ojdbc7.jar и ojdbc6.jar.

Корнем расположения модулей на сервере приложений WildFly 10 является каталог: [Каталог установки WildFly]\modules\system\layers\base\. В данном каталоге создаем две последовательности подкаталогов:

  • com\oracle\dbdriver6\main — здесь будет находится модуль com.oracle.dbdriver6
  • com\oracle\dbdriver7\main — здесь будет находится модуль com.oracle.dbdriver7

Имя модуля определяется последовательностью имен каталогов от корня расположения модулей сервера приложений до каталога расположения файлов модуля – main. Соответственно jar-файлы мы помещаем: ojdbc6.jar - в [..\com\oracle\dbdriver6\main], а ojdbc7.jar - в [..\com\oracle\dbdriver7\main].

Следующим шагом при создании модулей будет создание XML документов, описывающих каждый модуль. Для JDBC драйвера ojdbc6.jar в каталоге [..\com\oracle\dbdriver6\main]:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle.dbdriver6">
    <resources>
         <resource-root path="ojdbc6.jar"/>
     </resources>
     <dependencies>
         <module name="javax.api"/>
         <module name="javax.transaction.api"/>
     </dependencies>
 </module>

 Для JDBC драйвера ojdbc7.jar в каталоге [..\com\oracle\dbdriver7\main]:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle.dbdriver7">
    <resources>
        <resource-root path="ojdbc7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Благодаря модульности сервера приложений WildFly можно без особых проблем размещать одноименные библиотеки классов для одновременного использования в приложениях. После проведенных настроек приложения, развернутые на сервере могут работать с различными версиями базы данных Oracle.

Следующий шаг – это конфигурация самого класса драйвера, ответственного за создание соединения с базой данных Oracle. Для этого нам необходимо перейти в каталог [Каталог установки WildFly]\standalone\configuration\ и внести корректировки в файл stanalone.xml. В файле, открытом на редактирование переходим к разделу - drivers (между открывающимся и закрывающимся тегами <drivers>), добавляем новый раздел <driver>, с указанием класса, ответственных за создание соединения (сессии) с базой данных Oracle для каждой версии драйвера. После добавления нового раздела, содержимое файла дополнится следующей информацией:

<drivers>
	...
	<driver name="oraDrv6" module="com.oracle.dbdriver6">
		<xa-datasource-class>
			oracle.jdbc.OracleDriver
		</xa-datasource-class>
	</driver>
	<driver name="oraDrv6XA" module="com.oracle.dbdriver6">
		<xa-datasource-class>
			oracle.jdbc.xa.client.OracleXADataSource
		</xa-datasource-class>
	</driver>
	<driver name="oraDrv7" module="com.oracle.dbdriver7">
		<xa-datasource-class>
			oracle.jdbc.OracleDriver
		</xa-datasource-class>
	</driver>
	<driver name="oraDrv7XA" module="com.oracle.dbdriver7">
		<xa-datasource-class>
			oracle.jdbc.xa.client.OracleXADataSource
		</xa-datasource-class>
	</driver>
	...
</drivers>