Configuração GlassFish para uso do @PostActivate e @PrePassivate
8 respostas
Diabo_Loiro
Estava testando essas funcionalidades dos StateFull Session Beans no glassfish e simplesmente ele não executa o @PostActivate… eu encontro o mesmo problema do nosso Amigo.
O q vc fez p/ se certificar de o seu SFSB passou por passivation?
Diabo_Loiro
Sei que ele a passiva porque ele chama o método anotado com @PrePassivate o problema é que depois que depois que ele chamou o @PrePassivate ele não chama o @PostActivate como se o SFSB tivesse sido removido em vez de a passivado… e eu recebo a exception do link acima, ainda dei uma olhada na configuração do glassfish e esta normal configurado para ele fazer cache ou seja deveria serializar e deserializar o SFSB.
Realmente não entendi o por que acontece isso mais ai vi que falarão de um bug no glassfish la no topico do outro forum … se você tiver curiosidade de tentar, serial bom ter uma segunda opinião se quiser eu posto o codigo é bem simples.
dev.rafael
Posta o código ai q eu tento fazer um teste.
Diabo_Loiro
Tah bem simples o codigo… era so pro jsf chama nosso amigo ejb… falta alguns pedaços estava melhorzinho mais não salvei se conseguir testar… ate quando voce desliga o servidor ele executa o @PrePassivate e não o @PreDestroy, vlw a disposição ai.
EJB
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagebr.com.bruno;importjava.util.concurrent.TimeUnit;importjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;importjavax.annotation.Resource;importjavax.ejb.EJBContext;importjavax.ejb.PostActivate;importjavax.ejb.PrePassivate;importjavax.ejb.SessionContext;importjavax.ejb.Stateful;importjavax.ejb.StatefulTimeout;/** * * @author bruno.marinho */@Stateful@StatefulTimeout(unit=TimeUnit.SECONDS,value=5)publicclassMeuSessionBeanStatefulimplementsMeuSessionBeanStatefulLocal{@ResourceprivateEJBContextcontext;@ResourceprivateSessionContextSessioncontext;privateintprocessamento;@PostConstructprivatevoidinicio(){System.out.print("Criada uma nova instancia [ "+this+" ]");}@PostActivateprivatevoidconecta(){System.out.print(" Conectou ao servidor ");}@PrePassivateprivatevoiddesconecta(){System.out.print(" desconectou ao servidor ");}publicStringprocessamento(){System.out.print("processando metodo"+context.getCallerPrincipal()+" - "+Sessioncontext.getInvokedBusinessInterface());processamento++;return"processando metodo";}@PreDestroyprivatevoidfim(){System.out.print(" [ "+this+" ] realizou processamentos "+processamento);}}
Backing Bean
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagebr.com.bruno.beans;importbr.com.bruno.MeuSessionBeanLocal;importbr.com.bruno.MeuSessionBeanStatefulLocal;importjavax.ejb.EJB;importjavax.enterprise.context.SessionScoped;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.RequestScoped;/** * * @author bruno.marinho */@ManagedBean@SessionScopedpublicclassMeuManagedBean{@EJBMeuSessionBeanStatefulLocalejb;privateStringtextoStateful;publicStringgetTexto(){returnejb.processamento();}publicStringgetTextoStateful()throwsInterruptedException{ejb.processamento();Thread.sleep(10000);returnejb.processamento();}publicvoidsetTextoStateful(StringtextoStateful){this.textoStateful=textoStateful;}/** Creates a new instance of MeuManagedBean */publicMeuManagedBean(){}}
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"><h:head><title>Facelet Title</title></h:head><h:body><h:outputTextvalue="#{meuManagedBean.textoStateful}"/></h:body></html>
dev.rafael
Diz ai, qual versão do Glassfish vc usou?
Diabo_Loiro
A versao 3 que vem no pacote do netbeans 6.9.1.
dev.rafael
Cara, eu fiz alguns testes com o Glassfish v3 e obtive o mesmo problema q vc. No v2 eu ñ obtive sucesso em simular a “passivação” do SFSB. Eu vou tentar fazer mais alguns testes com o Glassfish v2 e com o Resin e tb com os nightly builds do v3 p/ garantir q é mesmo um bug.
Diabo_Loiro
Obrigado pela disposição de testar ja estava aborrecido… com isso vou testar no Jboss quando tiver um tempo.