WSO2" использовать фабрику источников данных " опция источников данных JNDI


При настройке источника данных можно установить флажок "Использовать фабрику источников данных" в разделе "Expose as JNDI datasource". Документация объясняет это следующим образом:

Чтобы сделать источник данных доступным из внешней среды, необходимо использовать фабрику источников данных. При выборе этого параметра будет создан ссылочный объект с определенными свойствами источника данных. Фабрика источников данных создаст экземпляр источника данных на основе значений ссылочного объекта, когда доступ к источнику данных из внешней среды. В конфигурации источника данных это задается следующим образом:

Однако мне это кажется совершенно непонятным. Что здесь может быть "внешней средой"?

Может ли кто-нибудь более подробно объяснить фактическую разницу между состоянием флажка set&unset?

Я использую такой источник данных JNDI в пользовательском медиаторе для подключения к Postgres9. 3 и вижу разницу как образом:

  • флажок "ВКЛ.": разметка транзакций (BEGIN / COMMIT/ROLLBACK) не выдается, но новые записи всегда добавляются в базу данных, например autocommit включен
  • флажок "выкл.": время от времени добавляются новые записи, неявно выдаются инструкции BEGIN и ROLLBACK (отображаются в журнале Postgres)
1 2

1 ответ:

Таким образом, результатом этой настройки является создание экземпляра определенного пула соединений (org.апаш.кот.интерфейс jdbc.бассейн.Источник данных) для каждого медиатора, запрашивающего его. В противном случае все посредники используют один и тот же пул соединений.

В моем случае проблема возникла из-за того, что настройки соединения не очищаются после его возвращения в пул. Некоторые посредники установили autoCommit=false для некоторых соединений, и здесь поведение стало неопределенным: соединения все еще имеют настройки по умолчанию успешно сохраненные данные в БД, в то время как соединения с autoCommit=false выдали инструкции BEGIN/ROLLBACK (таким образом, ничего не сохраняя в БД).