Конфигурация источника данных Jboss для MySQL-MysqlXADataSource элемент

Я рассматривал несколько примеров настройки источника данных для MySQL в Jboss 7. Все ссылки которые я видел для элемента выглядит так:

<driver name="com.mysql" module="com.mysql">
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>

Я знаю, что такое <driver-class> а что такое <xa-datasource-class> какова его цель?

когда я настроил источник данных на Tomcat, прежде чем мне не нужно было указывать источник данных xa для любой базы данных. Почему это здесь?

спасибо

1 ответов


согласно спецификации jdbc 4.0 (12.2): источники данных XA создают соединения XA, способные использоваться в глобальных/распределенных транзакциях. Такое соединение может потребоваться, если транзакция охватывает несколько баз данных или вызовов JMS. Вы можете найти четкое объяснение концепции здесь:http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95346

Если у вас нет такого сценария распределенных транзакций, вам не нужно укажите источник данных xa, достаточно простой конфигурации источника данных. Таким образом, если вы используете простой источник данных, нет необходимости указывать класс xa-datasource при объявлении драйвера.

<datasources>
    <datasource jndi-name="java:/myDatasource" pool-name="MyDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
                <connection-url>
                    jdbc:mysql://localhost:3306/mydb
                </connection-url>
                <driver>
                    mysql
                </driver>
                <transaction-isolation>
                    TRANSACTION_READ_COMMITTED
                </transaction-isolation>
                <pool>
                    <min-pool-size>
                        5
                    </min-pool-size>
                    <max-pool-size>
                        10
                    </max-pool-size>
                    <prefill>
                        true
                    </prefill>
                    <use-strict-min>
                        false
                    </use-strict-min>
                    <flush-strategy>
                        FailingConnectionOnly
                    </flush-strategy>
                </pool>
                <security>
                    <user-name>
                        username
                    </user-name>
                    <password>
                        password
                    </password>
                </security>
            </datasource>
            <drivers>
                <driver name="mysql" module="com.mysql"/>
            </drivers>
        </datasources>