Artigo Java Magazine 06 - Dicas e Soluções
Artigo publicado pela Java Magazine 06.
Esse artigo faz parte da revista Java Magazine edição 06. Clique aqui para ler todos os artigos desta edição
Dicas e Soluções<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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:"