Продолжение. См. предыдущую часть.
(см. продолжение)
Быстрый старт - в деталях
Транзакция
в "быстром старте" включает себя две вещи - сообщение 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.sql10.</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_table2.(3.unique_id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,4.data_column VARCHAR(255) NOT NULL5.);(см. продолжение)
Комментариев нет:
Отправить комментарий