Как я могу установить уровни изоляции для каждого метода в EJB 3

StackOverflow https://stackoverflow.com/questions/585968

Вопрос

Можно ли установить уровень изоляции базы данных (т. Е. сериализуемый, повторяемый для чтения и т.д.) Для данного вызова метода 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 с использованием, т. е.программная настройка изоляции?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top