Next: Interface entre a Biblioteca
Up: ep2
Previous: O Produto Deste EP
Já que você implementará algumas das interfaces do OTS, comece
entendendo bem esse serviço. A especificação do OTS está disponível em
http://www.omg.org/technology/documents/formal/transaction_service.htm.
Concentre seu estudo nas interfaces que você vai implementar e na
definição do formato do contexto transacional transportado ``de
carona'' com requisições e respostas IIOP.
A propagação do contexto transacional ficará a cargo de um par de
interceptadores portáteis: um
PortableInterceptor::ClientRequestInterceptor registrado com o ORB
do lado cliente e um
PortableInterceptor::ServerRequestInterceptor registrado com o
ORB do servidor de aplicações. No cliente, você precisará ainda de um
PortableInterceptor::Current para transferir o contexto
transacional de uma thread cliente para uma thread emissora de
requisições. No servidor, você precisará de outro
PortableInterceptor::Current para transferir o contexto
transacional de uma thread receptora de requisições para uma
thread servente. Para aprender a usar interceptadores portáteis
CORBA, veja as seguintes referências:
- a especificação do OMG (http://www.omg.org/cgi-bin/doc?formal/02-06-25);
- a seção 9.5 do livro Java Programming with CORBA (Third
Edition), de Gerald Brose et al., disponível no xerox do CAMAT;
- o tutorial disponível em
http://java.sun.com/j2se/1.4.2/docs/guide/idl/PI.html.
O seu service MBean precisará interagir com o gerenciador de transações
do JBoss em várias situações:
- Quando uma transação for iniciada por um cliente CORBA, ocasião em
que o service MBean deve interagir com o gerenciador de
gerenciador de transações para iniciar a transação e para obter o
identificador (Xid) da nova transação.
- Quando uma transação for encerrada por um cliente CORBA.
- A cada invocação IIOP sobre um EJB. O service MBean deve
verificar se a invocação ocorreu dentro de uma transação (ou seja,
se um contexto transacional chegou junto com a requisição IIOP). Em caso
afirmativo, o service MBean fará o gerenciador de transações do
JBoss ``importar'' esse contexto transacional.
Os arquivos fonte do gerenciador de transações do JBoss estão nos
seguintes subdiretórios da árvore de fontes:
- transaction/src/main/org/jboss/tm (o transaction
manager propriamente dito)
- server/src/main/org/jboss/tm/usertx (o lado
cliente e o tratamento da propagação de contexto transacional)
Esse gerenciador de transações implementa a especificação JTA
(Java Transaction API), disponível em
http://java.sun.com/products/jta/index.html.
Next: Interface entre a Biblioteca
Up: ep2
Previous: O Produto Deste EP
Francisco Reverbel
2003-10-23