У меня нет критериев, чтобы обосновать следующее, это просто «мы все знаем, что» общепринятая мудрость. Как и во всех обсуждениях производительности, ваш Milage будет меняться, если это абсолютно важно для вашего приложения, то вам нужно выполнить свои собственные тесты.
Я полагаю, что при использовании пула подключений с поддержкой XA для работы, не связанной с XA, нет существенного снижения производительности - WebSphere осторожно использует транзакции 1PC, когда в транзакции используется только один ресурс. Основными накладными расходами XA является дополнительный набор XA-сообщений Prepare / Commit / Forget, которые не будут возникать в простом случае 1PC.
Таким образом, главная опасность заключается в непреднамеренной инициации транзакции 2PC. Это может произойти, если вы выполняете несколько работ, предположительно против одного и того же ресурса, но с (например) разными уровнями изоляции. Вы получаете соединение из пула и выполняете некоторую работу, это соединение теперь связано с вашей транзакцией до момента COMMIT. Вы «закрываете» соединение, намеренно возвращая его в пул, но на самом деле пул WebSphere сохраняет соединение для вашей транзакции. Вы снова запрашиваете соединение, чтобы выполнить дополнительную работу, при условии, что вы запрашиваете точно такое же соединение, вам снова будет предоставлено то же соединение, и поэтому работа продолжается в одной транзакции - у нас всего 1PC, никаких накладных расходов.
Я бы использовал первоначальный подход к созданию единого пула с поддержкой XA, но имел две отдельные ссылки на ресурсы, одну для работы 2PC, другую для работы 1PC. Обе ссылки указывают на один и тот же пул соединений. Теперь ваш код изолирован от необходимости иметь отдельные пулы соединений, это просто вопрос перепривязки ресурса-ссылки, если вам когда-либо понадобится внести изменения.