Como posso definir níveis de isolamento por método em EJB 3
-
06-09-2019 - |
Pergunta
É possível definir o nível de isolamento de base de dados (ou seja Serializable, repetível ler etc) para uma determinada chamada de método EJB 3?
Eu entendo que isso não é coberto pelo EJB Spec, então detalhes de como fazê-lo em qualquer um JBoss ou Glassfish maneira específica seria ótimo.
Estou começando a ter a impressão de que não é possível e que você só pode configurá-lo por conexão piscina, que é claramente de modo algum uma solução ideal.
Solução
Esta é, de facto não abrangidos pela especificação e mas pode ser configurado através de descritores de implementação específica do servidor de aplicativos quando suportado. WebLogic faz, por exemplo, e você pode especificar isolamento da transação no nível de método na weblogic-ejb-jar.xml
:
Exemplo
<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>
Eu não sei se JBoss ou GlassFish tem um equivalente (I não pôde acessar o página SupportWLDDInContainers para encontrar uma resposta para GlassFish).
Como alternativa, se você tentar usar Connection#setTransactionIsolation(int)
dentro de um método EJB determinado usando ou seja configuração isolamento de programação?