2014-12-10 6 views

ответ

0

Серверы приложений предприятия, такие как WildFly, используют JTA исключительно потому, что это требует стандарта Java EE Transaction Management.

Локальные ресурсы ресурсов предназначены для ручной обработки соединения JDBC, и целью AS является управление ресурсами от вашего имени.

Таким образом, вы не должны использовать локальные транзакции ресурсов в WildFly или любых других AS. Вам нужно использовать JTA DataSource, который уже предоставляет вам контейнер.

+0

«Локальные транзакции ресурсов предназначены для ручной обработки соединения JDBC», похоже, не является правильной инструкцией. Локальная транзакция ресурсов означает, что существует только один ресурс (база данных). В большинстве случаев у вас есть только один транзакционный ресурс, однако это не означает, что необходимо ручное управление подключением jdbc. Например, вы можете использовать сторонний пул соединений (например, tomcat jdbc pool или c3po). Также вы можете иметь источник данных JTA с единственным ресурсом. Менеджер транзакций выполняет оптимизацию для одного ресурса, где 2-фазная фиксация не требуется. – Shailendra

+0

Как вы думаете, что транзакция управляется, если не через java.sql.Connection.commit() и java.sql.Connection.rollback()? Вот почему это связано с одним соединением, поскольку вы или какая-либо другая структура, которую вы полагаете, должны вызывать эти методы для настройки границ транзакций. Для JTA используется XAConnection. –

+0

Вы правы, но точка, которую я пытаюсь сделать, это то, что JTA - это API, и XA входит в картину, когда есть более одного ресурса, а один из них - ресурс XA. Вы можете использовать JTA с единственным ресурсом (ресурс локальный). – Shailendra

Смежные вопросы