XA-ресурсов поддержка XA.Не требуется .Поэтому вполне возможно запустить транзакцию не-XA через ресурс, поддерживающий XA, и зафиксировать ее локально.
Второй вопрос не совсем понятен.Добавить ресурс в локальной транзакции в транзакцию XA?Не уверен, что это поддерживаемый вариант использования.Или вопрос «могу ли я добавить ресурс в транзакцию XA после того, как я зафиксировал локальную?».Да, вы можете.
Давайте рассмотрим пример подключения к базе данных.Когда локальная транзакция запускается через соединение, идентификатор транзакции существует только в базе данных.После подтверждения этот идентификатор исчезает, и соединение возвращается в исходное состояние, то есть не в какой-либо транзакции.Соединение можно добавить к любой транзакции XA.
Теперь, когда вы запускаете транзакцию XA, несколько соединений (например, из разных JVM в кластере) могут использовать один и тот же идентификатор транзакции, и с точки зрения БД онив рамках той же транзакции.Если у вас есть другое соединение в локальной транзакции, которое имеет свой собственный идентификатор транзакции для базы данных, как бы вы добавили это соединение (и, что более важно, изменения, сделанные в нем) в существующий XA с другим идентификатором?Это было бы грязное дело, и я считаю, что не поддерживается.