В WebSphere, если ваш код открывает два одновременных подключения к базе данных, вы получаете сообщение об ошибке:
J2CA0086W: Совместное подключение MCWrapper id 556e556e Управляемое подключение WSRdbManagedConnectionImpl @ 52365236 Состояние: STATE_TRAN_WRAPPER_INUSE из ресурса jdbc / abc использовался в пределах локальной границы транзакции.
Наша структура позволяет нам делать это (вложенные транзакции, которые могут быть на отдельном соединении или на нескольких именованных транзакциях). Я видел много ссылок на отключение некоторых переключателей в WebSphere для включения общего доступа к соединениям, но нет подробностей о том, как установить этот флаг. Может кто-нибудь подсказать мне, как этого добиться?
В частности, если вы видите эту статью: http://www -01.ibm.com / support / docview.wss? Rs = 180 & context = SSEQTP & dc = DB520 & dc = D600 & dc = DB530 & dc = D700 & dc = DB500 и dc = DB540 & dc = DB540 и dc = DB540 DB550 & q1 = j2ca0086w & UID = swg21121449 & LOC = en_US & CS = UTF-8 & языки = еп * +1009 *
в разделе «Решение проблемы» я хочу знать, как настроить пул соединений как недоступный для совместного использования (при условии, что это действительно решает проблему).
Какую версию IBM WAS вы используете? Если у вас есть WAS 8, перейдите к Ресурсы-> JDC-> Источники данных-> Источники данных-> Свойства WebSphere Application Server -> Источники данных без транзакций.
Извините за мой английский.
Сообщение появляется, когда dataSource.getConnection() вызывается дважды в сервлет. Источник данных jdbc / oracle является поиском из локальной ссылки. Вызовите его один раз и повторно используйте соединение или позвоните con.close() перед выполнением 2-го getConnection()
dataSource.getConnection()
con.close()
getConnection()