Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 1 Transações com EJB 3.0 Vânia...

Post on 07-Apr-2016

238 views 10 download

Transcript of Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 1 Transações com EJB 3.0 Vânia...

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.