Как я могу установить уровни изоляции для каждого метода в EJB 3
-
06-09-2019 - |
Вопрос
Можно ли установить уровень изоляции базы данных (т. Е. сериализуемый, повторяемый для чтения и т.д.) Для данного вызова метода EJB 3?
Я понимаю, что это не предусмотрено спецификацией EJB, поэтому было бы здорово получить подробную информацию о том, как это сделать с помощью JBoss или Glassfish.
У меня начинает складываться впечатление, что это невозможно и что вы можете установить это только для каждого пула соединений, что явно ни в коем случае не является идеальным решением.
Решение
Это действительно не предусмотрено спецификацией, но может быть настроено с помощью специфичных для сервера приложений дескрипторов развертывания, если поддерживается.WebLogic делает, например, и вы можете указать изоляцию транзакции на уровне метода в weblogic-ejb-jar.xml
:
Пример
<transaction-isolation> <isolation-level>...</isolation-level> <method> <description>...</description> <ejb-name>...</ejb-name> <method-intf>...</method-intf> <method-name>...</method-name> <method-params>...</method-params> </method> </transaction-isolation>
Я не знаю, есть ли у JBoss или GlassFish эквивалент (я не смог получить доступ к Поддержка двухконтейнеров страница, чтобы найти ответ для GlassFish).
В качестве альтернативы, пытались ли вы использовать Connection#setTransactionIsolation(int)
внутри данного метода EJB с использованием, т. е.программная настройка изоляции?