SetSessionContext não executa

1 resposta
R

Oi,

O método setSessionContext() não era pra ser executado automaticamente pelo containter quando ocorre a criação do EJB no servidor? Bom, pelo menos é isso que eu entendi em: [url]http://java.sun.com/products/ejb/javadoc-2_1-fr/javax/ejb/SessionBean.html#setSessionContext(javax.ejb.SessionContext)[/url]

Crei meu EJB, defini o método e coloquei até um JOptionPane pra fazer log (...) e nada.

Segue trecho do meu ejb. Agradeço qualquer ajuda. Thanks.

/**
 * <p><b>Descrição:</b>Disponibiliza os métodos básicos para salvamento, atualização, recuperação e deleção de objetos 
 * através do framework hibernate.<br>
 * <p><b>Empresa:</b> nomeDaEmpresa</p>
 * <p><b>Sistema:</b> nomeDoSistema</p>
 * <p><b>Criação:</b> Jan 27, 2004 10:58:56 PM</p>
 * @ejb.bean name="Hibernate"
 *	jndi-name="HibernateBean"
 *	type="Stateless" 
 */
public class HibernateBean implements SessionBean {
	/**
	 * Referência ao contexto da sessão
	 */
	public SessionContext ctx = null;
	
	/* (non-Javadoc)
	 * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
	 */
	public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
		//TODO Verificar se isso realmente inicializa o contexto da sessao
		System.out.println("GenericClientHibernateBean.setSessionContext...");
		JOptionPane.showMessageDialog(null, "setSessionContext");

		this.ctx = arg0;
		if (this.ctx != null) {
			System.out.println("CTX inicializado");
			JOptionPane.showMessageDialog(null, "setSessionContext inicializado");
		} else {
			System.out.println("Atencao!!! CTX = NULL");
			JOptionPane.showMessageDialog(null, "setSessionContext = NULL");
		}
	}
	
	//...bla bla bla

}

1 Resposta

ozielneto

No caso do Stateless SessionBeans, ele é executado somente uma única vez no ciclo de vida todo… E antes da primeira chamada do ejbCreate()…

Nas chamadas subsequentes, cada chamada ao ejbCreate() é interceptada e o container tomará a necessidade de haver ou nao uma nova instancia…

Cada chamada aos metodo de negocio (criado nas interfaces LocalObject ou Object), é executado dentro uma instancia ja existente…

Por isso nao deveomos usar Stateless SessionBeans para armazenar dados de um unico cliente, pois usa instancia e compartilhada…

Uma outra falha é voce chamar um componente do SWING dentro do EJB… Isso nao deveria funcionar em Runtime… Se voce quer fazer log, use System.out.println()

Lembre-se que os EJBs sao componentes server side, e devem ser executados dentro do servidor entreprise…

[]'s

Criado 7 de abril de 2004
Ultima resposta 7 de abr. de 2004
Respostas 1
Participantes 2