Продолжение. См. предыдущую часть.
(см. продолжение)
Быстрый старт - в деталях
Транзакция
в "быстром старте" включает себя две вещи - сообщение JMS и запись в
базу данных. Давайте начнем с изучения подключения к базе данных HSQLDB,
которая используется в "быстром старте". Во-первых, нам необходимо
создать источник данных для определения подключения к базе данных.
В файле: quickstart-ds.xml:
01.
<
datasources
>
02.
<
local-tx-datasource
>
03.
<
jndi-name
>JmsTransactedDB</
jndi-name
>
04.
<
connection-url
>jdbc:hsqldb:hsql://localhost:1706</
connection-url
>
05.
<
driver-class
>org.hsqldb.jdbcDriver</
driver-class
>
06.
<
user-name
>sa</
user-name
>
07.
<
password
></
password
>
08.
<
min-pool-size
>5</
min-pool-size
>
09.
<
max-pool-size
>20</
max-pool-size
>
10.
<
idle-timeout-minutes
>0</
idle-timeout-minutes
>
11.
<
depends
>jboss:service=JmsTransactedDB</
depends
>
12.
<
prepared-statement-cache-size
>32</
prepared-statement-cache-size
>
13.
</
local-tx-datasource
>
14.
15.
<
mbean
code
=
"org.jboss.internal.soa.esb.dependencies.HypersonicDatabase"
16.
name
=
"jboss:service=JmsTransactedDB"
>
17.
<
attribute
name
=
"Port"
>1706</
attribute
>
18.
<
attribute
name
=
"BindAddress"
>localhost</
attribute
>
19.
<
attribute
name
=
"Database"
>JmsTransactedDB</
attribute
>
20.
<
attribute
name
=
"Silent"
>true</
attribute
>
21.
<
attribute
name
=
"Trace"
>false</
attribute
>
22.
<
attribute
name
=
"No_system_exit"
>true</
attribute
>
23.
<
attribute
name
=
"DataDir"
>${jboss.server.data.dir}</
attribute
>
24.
</
mbean
>
25.
</
datasources
>
Некоторые пояснения (исправил неточности, ниже. - Прим. перев.):
- Строка 2. - Мы опеределяем local-tx-datasource так, чтобы можно было использовать JCA-подключение с поддержкой транзакций. [6]
- Строка 3. - Мы используем JNDI-имя, для ссылки на этот источник данных (
datasource).
- Строки 5-13. - драйвер класса базы данных, соединение, URL, логин/пароль и т.д., для подключения к базе данных.
- Строка 15. -Интерфейс MBean для работы СУБД Hypersonic в той же самой виртуальной Java-машине, в которой работает и JBoss. Запомним, что здесь у нас название сервиса, а так же JNDI-имя, все это нам скоро потребуется.
ОК, у нас есть
datasource,
который нужен для подключения к базе данных HSQLDB, и это нам нужно в
режиме поддержки транзакций. Что теперь? Мы должны гарантировать, что
наша база данных на самом деле существует, прежде чем мы попытаемся ее
использовать! К счастью, у SOA платформы есть класс, который может
инициализировать базу данных при развертывании (deployed)
.esb-приложения.
В файле jbossesb-service.xml:
01.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02.
03.
<
server
>
04.
<
mbean
code
=
"org.jboss.internal.soa.esb.dependencies.DatabaseInitializer"
05.
name
=
"jboss.esb:service=JmsTransactedDatabaseInitializer"
>
06.
<
attribute
name
=
"Datasource"
>java:/JmsTransactedDB</
attribute
>
07.
<
attribute
name
=
"ExistsSql"
>select * from jms_transacted_table</
attribute
>
08.
<
attribute
name
=
"SqlFiles"
>
09.
hsqldb/create.sql
10.
</
attribute
>
11.
<
depends
>jboss.jca:name=JmsTransactedDB,service=DataSourceBinding</
depends
>
12.
</
mbean
>
13.
</
server
>
В этом файле есть несколько (3) интересных вещей:
- Строка 4. - Этот MBean создается при запуске базы данных. Как его подключить к базе данных? Смотри строку 6.
- Строка 6. - Это ссылка на наш datasource. Обратите внимание на JNDI-имя, которое мы определили в datasource. Как сделать, чтобы DatabaseInitializer знал, какую искать схему в базе данных? Смотри строку 9.
- Строка 9. - Вот ссылка на файл из "быстрого старта" - src/hsqldb/create.sql. Этот файл создает очень простую таблицу в нашей базе данных, для использования в "быстром старте".
В файле src/hsqldb/create.sql:
1.
create
table
jms_transacted_table
2.
(
3.
unique_id
INTEGER
GENERATED
BY
DEFAULT
AS
IDENTITY(START
WITH
1)
NOT
NULL
PRIMARY
KEY
,
4.
data_column
VARCHAR
(255)
NOT
NULL
5.
);
(см. продолжение)
Комментариев нет:
Отправить комментарий