powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / TransactionManagementType.BEAN
11 сообщений из 11, страница 1 из 1
TransactionManagementType.BEAN
    #39789006
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
Подскажите, пожалуйста, как будут вести себя транзакции BMT, если я не задам в бине действий с транзакциями: .begin, .commit и т.д.?
Верно ли я понимаю, что транзакция будет создана неявно при старте, и завершена при окончании работы экземпляра бина?
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789155
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnДобрый день всем.
Подскажите, пожалуйста, как будут вести себя транзакции BMT, если я не задам в бине действий с транзакциями: .begin, .commit и т.д.?
Верно ли я понимаю, что транзакция будет создана неявно при старте, и завершена при окончании работы экземпляра бина?
Насколько мне известно, транзакций в бине не будет.
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789200
сезонатор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grinnДобрый день всем.
Подскажите, пожалуйста, как будут вести себя транзакции BMT, если я не задам в бине действий с транзакциями: .begin, .commit и т.д.?
Верно ли я понимаю, что транзакция будет создана неявно при старте, и завершена при окончании работы экземпляра бина?Нет, не будет создана.
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789209
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Не будет транзакции bmt, но будут транзакции уровня бд, так?
Спрашиваю потому, что в бине отрабатывает цикл, и данные в бд пишутся нормально, даже без явного открытия/закрытия транзакций.
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789238
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnСпасибо за ответы.
Не будет транзакции bmt, но будут транзакции уровня бд, так?
Спрашиваю потому, что в бине отрабатывает цикл, и данные в бд пишутся нормально, даже без явного открытия/закрытия транзакций.
Поскольку кода вы нам не представили, то нам остается только телепатия.
Поскольку телепатировать мне не впервой (по работе приходилось "чинить", правда, даже спасибо не говорили, настолько им было неловко), то значит у вас не закрытый перелом а CMT.

PS даю подсказку -
1) sessionContext.getUserTransaction()
2) залезать через intercept(...)
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789248
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnСпасибо за ответы.
Не будет транзакции bmt, но будут транзакции уровня бд, так?
Спрашиваю потому, что в бине отрабатывает цикл, и данные в бд пишутся нормально, даже без явного открытия/закрытия транзакций.
В БД каждый запрос будет оборачиваться в транзакцию (если Connection.autoCommit = true, что есть по умолчанию). Даже когда вы через какой-то другой клиент делаете селекты в базе без транзакций, они все равно оборачиваются в транзакции.
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789323
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо еще раз всем за ответы.
К сожалению, выложить код не могу, так как промышленный.

Суть в том, что в бине в одном методе соединение идет к двум разным БД - из одной данные читаются, в другую - записываются.
При запуске вываливалась ошибка:
ErrorBean: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource: cannot add more resources.
Решили проблему добавлением к бину только аннотации:
Код: java
1.
@TransactionManagement(TransactionManagementType.BEAN)


Вот и пытаюсь понять, почему это работает?
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789373
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grinnСуть в том, что в бине в одном методе соединение идет к двум разным БД
Вот она суть проблемы :) Что у вас разные пулы соединений и транзакция распределенная .

grinnРешили проблему добавлением к бину только аннотации:
Код: java
1.
@TransactionManagement(TransactionManagementType.BEAN)


ну т.е. вывели конкретную операцию из общей транзакции.
Думаю, такой же эффект приведет REQUIRES_NEW

ErrorLocal transaction already has 1 non-XA Resource: cannot add more resources.
Если у вас несколько пулов соединений настроено на сервере приложений, то только один пул может быть без поддержки XA.
Или настраивайте все соединения через драйвера XA. Тогда можно будет снова вернуть управление транзакциями Контейнеру (CMP)
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789374
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grinnВот и пытаюсь понять, почему это работает?
https://stackoverflow.com/questions/44458736/transactionmanagementtype-container-vs-transactionmanagementtype-bean
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789477
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, буду изучать.
...
Рейтинг: 0 / 0
TransactionManagementType.BEAN
    #39789499
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnБольшое спасибо, буду изучать.
Придётся по сути всё из стандартного для вменяемого программиста про транзакции изучать. То есть ничего не знаете.

Транзакции есть в БД, а управлять ими можно из клиента, при этом БД может быть несколько, а помимо БД могут быть и другие транзакционные сервисы. И вот по всему дереву от клиента (EJB в данном случае) через JDBC и до всех транзакционных сервисов одновременно с учётом их внутренних особенностей - это всё, вообще-то, надо понимать.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / TransactionManagementType.BEAN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]