У меня очень интересная ситуация. Я немного новичок в JBoss и Oracle, работая в основном с Weblogic на DB2. Тем не менее, то, что я пытаюсь сделать, довольно просто.
У меня есть local-tx-datasource для базы данных Oracle. Из моего кода Java I я вызываю datasource.getConnection () после извлечения источника данных, используя соответствующее имя JNDI. Объявление local-tx-datasource в файле my -ds.xml не имеет явной ссылки на поведение автоматической фиксации.
После получения соединения я выполняю запрос на создание / обновление и возвращаю правильный счетчик обновлений. Впоследствии, в течение короткой продолжительности , я даже могу получить эту запись. Однако после этого база данных делает вид, что вообще не получила запись, и ничего нет вообще.
Мой опыт работы с соединениями показывает, что это происходит, когда соединение не выполняет свою работу, и поэтому только это соединение сможет видеть данные в своей транзакции. Из того, что я прочитал, JBoss также следует спецификации, что возвращаемое соединение является автокоммитом. Я даже проверил это из своего Java-кода, и в нем говорится, что поведение autocommit установлено в true. Однако, если это так, почему мои записи не создаются / обновляются?
После этого я установил поведение автокоммитирования Connection на false (снова из кода Java), а затем явно сделал коммит. С тех пор не было никаких проблем.
Что может быть не так? Мое понимание autocommit здесь неверно, или у JBoss есть другая интерпретация этого. Пожалуйста, обратите внимание, у меня нет никаких транзакций вообще. Это очень простые запросы на вставку одной записи.