Как я могу установить уровни изоляции для метода в EJB 3 - PullRequest
3 голосов
/ 25 февраля 2009

Можно ли установить уровень изоляции базы данных (т. Е. Serializable, repeatable-read и т. Д.) Для данного вызова метода EJB 3?

Я понимаю, что это не охватывается спецификацией EJB, поэтому подробности о том, как это сделать для JBoss или Glassfish, будут хорошими.

У меня начинает складываться впечатление, что это невозможно, и вы можете установить его только для пула подключений, что, безусловно, не является идеальным решением.

1 Ответ

1 голос
/ 03 сентября 2010

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

В качестве альтернативы, вы пытались использовать Connection#setTransactionIsolation(int) внутри данного метода EJB, используя, например, программную настройку изоляции?

...