que aqui para ler esse artigo em PDF.imagem_pdf.jpg

Dicas e Soluções

Rollback em EJBs

Os desenvolvedores que trabalham com Enterprise JavaBeans conhecem as interfaces javax.ejb.SessionContext e javax.ejb.EntityContext, disponíveis desde a primeira versão da especificação de EJB. O método setRollbackOnly() está em ambas as interfaces, visto que são subinterfaces de javax.ejb.EJBContext. Chamá-lo indica para o container EJB que o único final possível para a transação atual é um rollback.

A questão é que grande parte dos desenvolvedores acredita que lançar uma exceção qualquer a partir de um dos métodos de um EJB irá cancelar a transação. Mas não é bem assim. Somente exceções que herdam de java.lang.RuntimeException podem ser interpretadas como uma indicação de rollback – podem porque o container pode simplesmente descartar a instância e tentar utilizar outra no lugar, dependendo das circunstâncias em que forem lançadas. Portanto, a única forma de garantir que uma transação seja cancelada é chamar setRollbackOnly() na instância de javax.ejb.EJBContext de seu EJB. Observe que isso só se aplica a EJBs com transações gerenciadas pelo container (CMT). Mais informações em:

 java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/ejb/EJBContext.html#setRollbackOnly().

Recuperando sessões após quedas do container

A maioria dos containers web permite que sessões sejam persistidas e recuperadas mesmo após uma queda do container. No entanto, para  tirar proveito desse mecanismo é necessário que todos os objetos armazenados nos objetos HttpSession sejam serializáveis – ou seja, suas classes devem implementar a interface java.io.Serializable direta ou indiretamente e que sejam também serializáveis todas as suas variáveis de instância não-transientes. Se o seu código seguir esse padrão, provavelmente apenas uma propriedade na configuração de seu servidor precisará ser alterada para que as sessões de seus usuários sobrevivam às paradas programadas e às inesperadas. Mais em:

...

Quer ler esse conteúdo completo? Tenha acesso completo