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]
|
