programação com objetos distribuídos (vânia r. sávio rodenas) 1 transações com ejb 3.0 vânia...

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

Upload: felicia-eger-gentil

Post on 07-Apr-2016

238 views

Category:

Documents


10 download

TRANSCRIPT

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

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

Page 2: Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 1 Transações com EJB 3.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.

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

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

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

InformáticaUFRGS

Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 4

Escopo de uma TransaçãoEscopo de uma Transação

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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

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

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

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

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.

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

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.

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

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

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

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.

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

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.

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

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.

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

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

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

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.

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

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:

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

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.

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

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.

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

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.

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

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.

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

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;

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

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.

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

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.

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

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.

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

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.