410013796724260
• Webmoney
R335386147728
Z369087728698
Настройка Datasource в JBossПри разработке WEB-приложения альтернативой применения JDBC-подключения к серверу БД можно выбрать класс DataSource, использующего JNDI (Java Naming and Directory Interface). В статье рассматривается вопрос настройки DataSource в сервере приложений JBoss для подключения к серверу БД Oracle. Более подробную информацию о службе имен и каталогов JNDI можно найти на нашем сайте здесь. Использование JNDI для получения DataSource в java-приложенииИспользование JNDI в программе, как правило, ограничивается всего несколькими строками. Типичным таким примером является подключение к серверу БД с использованием DataSource. Следующий код позволяет подключиться к источнику данных, привязанному к имени "java:jboss/datasources/slon". Этот источник данных определен в JBoss, и ниже будет показано, как его настроить. import java.sql.Connection; import javax.sql.DataSource; import java.sql.SQLException; import javax.naming.InitialContext; import javax.naming.NamingException; ... private DataSource ds = null; private Connection con = null; ... try { InitialContext ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:jboss/datasources/slon"); if (ds != null) { con = ds.getConnection(); } catch (NamingException e) { } catch (SQLException e) {} Работа с JNDI всегда начинается с создания объекта InitialContext (или InitialDirContext в случае работы со службой каталогов). Конструктор этого объекта может принимать параметры, определяющие, к какой службе и каким образом подключаться. В данном случае параметры в конструктор не передаются, поэтому происходит подключение к службе имен сервера JBoss. Затем вызовом метода lookup() из службы имен извлекается объект DataSource, соответствующий имени "java:jboss/datasources/slon". Класс DataSource предоставляет соединение с сервером БД в виде класса, реализующего интерфейс java.sql.Connection. То есть, DataSource управляет соединением с базой данных. Какие преимущества даёт использование DataSource? Основное, что мы видим, так это отсутствие параметров учетной записи (login/password) и сервера БД (host, port). То есть, разработчики могут отлаживаться на тестовом сервере, а на рабочем сервере Заказчика WEB-приложение разместит уже знающий администратор/специалист. Настройка DataSource в JBossДля настройки DataSource в JBOSS необходимо проделать 3 шага :
На первом шаге была создана директория ${JBOSS_HOME}/modules/com/oracle/ojdbc6/main, в котором разместился файл ojdbc6.jar. В этой же директории ${JBOSS_HOME}/modules/com/oracle/ojdbc6/main был создан файл module.xml со следующим контентом. <module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6"> <resources> <resource-root path="ojdbc6.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> На следующем шаге в раздел <datasources> файла ${JBOSS_HOME}/standalone/configuration/standalone.xml были внесен следующий код, в котором определялись параметры DataSource : <subsystem xmlns="urn:jboss:domain:datasources:1.0"> <datasources> <datasource jta="false" jndi-name="java:jboss/datasources/slon" pool-name="slon" enabled="true" use-ccm="false"> <connection-url> jdbc:oracle:thin:@[host]:1521:[sid] </connection-url> <driver-class>oracle.jdbc.OracleDriver</driver-class> <driver>oracle</driver> <pool> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <flush-strategy>FailingConnectionOnly</flush-strategy> </pool> <security> <user-name>slon</user-name> <password>slon</password> </security> <validation> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <timeout> <idle-timeout-minutes>10000</idle-timeout-minutes> </timeout> <statement> <share-prepared-statements> false </share-prepared-statements> </statement> </datasource> </datasources> </subsystem> Параметры настройки DataSource :
После старта JBoss (сервер Oracle также запущен) в консоли должна появиться следующая информация : 11:13:50,604 INFO [org.jboss.as.connector.subsystems.datasources] \ ServerService Thread Pool -- 27) JBAS010403: Deploying \ JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2) 11:13:53,163 INFO [org.jboss.as.connector.subsystems.datasources] \ (MSC service thread 1-1) JBAS010400: Bound data source [java:jboss/datasources/slon] |