InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 1
Transações com EJB Transações com EJB 3.03.0
Vânia Regina Sávio Rodenas
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 2
Transações Container-Transações Container-ManagedManaged
EJB configura os limites das transações;
simplifica o desenvolvimento;
código não inclui declarações que começam e terminam a transação;
cada método pode ser associado com uma única transação;
transações múltiplas ou aninhadas não serão permitidas;
não requerem que todos os métodos sejam associados com transações;
especificar quais métodos são associados com transações configurando os atributos das transações.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 3
Transações Container-Transações Container-ManagedManaged
Transações container-managed
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 4
Escopo de uma TransaçãoEscopo de uma Transação
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 5
Atributos das transações Atributos das transações
um atributo da transação controla o escopo de uma transação;
os valores dos atributos de uma transação podem ser: Required; RequiresNew; Mandatory; NotSupported; Supports; Never.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 6
Valores dos Valores dos AtributosAtributos
Required o método executa dentro da transação do cliente; se o cliente não está associado com uma transação, o container começa uma
nova transação antes de executar o método; é o atributo implícito de transação para todos os métodos; não é tipicamente declarado a menos que seja necessário sobrescrever um
outro atributo de transação.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 7
Valores dos Valores dos AtributosAtributos
RequiresNew se o cliente está sendo executado dentro de uma transação e invoca um
método com esse valor: suspende a transação do cliente; começa uma nova transação; delega a chamada para o método; reinicia a transação do cliente depois que o método acaba.
se o cliente não é associado com uma transação, o container começa uma nova transação antes de executar o método;
esse atributo deve ser usado quando é desejado assegurar que o método sempre executará dentro de uma nova transação.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 8
Valores dos Valores dos AtributosAtributos
Mandatory se o cliente está sendo executado dentro de uma transação, o método executa
dentro da transação do cliente; se o cliente não está associado a uma transação, o container dispara a
TransactionRequiredException; esse atributo é utilizado se o método deve usar a transação do cliente.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 9
Valores dos Valores dos AtributosAtributos
NotSupported se o cliente está sendo executado dentro de uma transação, o container
suspende a transação do cliente antes de invocar o método; depois que o método foi completado, o container reinicia a transação do
cliente; se o cliente não está associado a uma transação, o container não começa uma
nova transação antes de executar o método; é usado quando não há a necessidade de transações; as transações ocasionam overhead, então esse atributo pode aumentar o
desempenho.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 10
Valores dos Valores dos AtributosAtributos
Supports se o cliente está sendo executado dentro de uma transação, o método executa
dentro da transação do cliente; se o cliente não está associado com uma transação, o container não começa
uma nova transação antes de executar o método; como o comportamento transacional do método pode variar, deve ser usado
com cautela.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 11
Valores dos Valores dos AtributosAtributos
Never se o cliente está sendo executado dentro de uma transação, o container irá
gerar um RemoteException; se o cliente não está associado com uma transação, o container não começará
uma nova transação antes de executar o método.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 12
Atributos e Atributos e EscopoEscopo
Atributos da Transação e Escopo
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 13
AnotaçõesAnotações
em um bean, uma anotação do tipo @TransactionAttribute é utilizada;
Exemplo de utilização da anotação
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 14
Sincronização das Variáveis de Sincronização das Variáveis de InstânciaInstância
interface SessionSynchronization opcional; permite que instâncias com estado do session bean receba notificações de
sincronização de transação.
container invoca os métodos do SessionSynchronization: afterBegin; beforeCompletation; afterCompletation.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 15
Transações Bean - Transações Bean - ManagedManaged
é marcado explicitamente os limites da transação;
as transações container-managed requeiram menos código, existe uma limitação: quando um método está executando, ele pode ser associado com uma única
transação ou com nenhuma; essa limitação tornará a codificação de seu bean difícil, poderia ser
considerado usar as transações bean-managed.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 16
Transações Bean - Transações Bean - ManagedManaged
Transações Bean-Managed
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 17
Transações Bean - Transações Bean - ManagedManaged
checando várias condições, o pseudocódigo decide começar ou parar transações diferentes dentro de um método de negócio.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 18
JTAJTA
API Java de Transações;
permite a demarcação de transações de uma maneira independente da implementação do administrador da transação;
aplicação servidora implementa o administrador das transações com o Serviço de Transações Java (JTS).;
seu código não faz uma chamada ao método JTS diretamente;
transação JTA é controlada pelo administrador de transações do Java EE;
esse administrador possui uma limitação: não suporta transações aninhadas.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 19
JTAJTA
para demarcar uma transação JTA devem ser invocados os métodos: begin; commit; rollback da interface javax.transaction.UserTransaction.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 20
Transação em .NET Transação em .NET 2.02.0
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 21
.NET.NET
A plataforma da Microsoft .NET 2.0 introduz um novo namespace chamado System.Transactions que possui um simplificado modelo de transação;
Há dois modelos disponíveis no .NET: ADO.NET; System.Transactions.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 22
ADO.NETADO.NET
declaração de atualização consiste nos passos:
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 23
ADO.NETADO.NET
problemas desse modelo: quando é necessário atualizar mais que uma base de dados ou recursos
agrupados sobre uma transação única; o objeto de transação é criado de uma transação para uma base de dados
única; não há um caminho direto de atualizações agrupadas para mais que uma
base de dados dentro de uma simples transação;
quando a administração de transações é realizada em um cenário de orientação a objetos, essas transações não são ideais.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 24
Enterprise Enterprise ServicesServices
As transações Enterprise Services tratam a maioria das deficiências das transações ADO.NET: provendo um protocolo de commit de duas fases e um administrador de
transações distribuídos; transações independentes da base de dados; provê transações de uma maneira declarativa.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 25
Enterprise Enterprise ServicesServices
não há uma criação explícita de objetos de transação;
usada transações para marcar áreas onde as transações devem ser utilizadas;
atributo Autocomplete especifica que a transação deve ser commit se erros não foram gerados.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 26
Enterprise Enterprise ServicesServices
problemas desse modelo: a classe necessita ser herdada de uma classe ServicedComponent para obter
as vantagens das transações Enterprise Services; um único modelo de herança, restringirá a utilização de classes de heranças
vindas de outras classes de base; outro problema é que as transações Enterprise Services são sempre tomadas
como uma transação distribuída.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 27
System.TransactionSystem.Transactionss
nova adição para o framework .NET 2.0;
trata os problema dos outro modelos e traz consigo as melhores características dos modelos ADO.NET e do Enterprise Services juntos;
objeto TransactionScope agrupa sob uma transação um conjunto de declarações;
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 28
System.TransactionSystem.Transactionss
modelo System.Transaction com a mesma transação vista como exemplo em Enterprise Services.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 29
System.TransactionSystem.Transactionss
escopos de transação: Required: usado para especificar que o bloco de código deverá sempre estar
dentro de uma transação; RequiresNew: sempre criará uma nova transação; Suppress: nunca será parte de uma transação.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 30
ComparaçãComparaçãoo
EJB 3.0 possuir mais opções para atributos de transações, portanto pode-se inferir que o mesmo ofereça mais flexibilidade ao programador;
EJB, transações bean-managed, programador delimita explicitamente as transações, pois método como commit transaction são utilizados pode-se ter mais flexibilidade; aumenta-se a probabilidade de erros;
.Net2.0, utilizando-se o modelo System.Transactions, não é necessário invocar métodos como commit ou abort, pois os mesmos são controlados através da declaração do objeto Transaction.Scope.
InformáticaUFRGS
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 31
Considerações Considerações FinaisFinais
lançado o .NET versão 3.0;
poucos detalhes sobre o funcionamento interno das transações sob .NET;
os novos modelos prometem resolver todos problemas anteriores;
pouca referência no tutorial sobre JTS.