Problemas com EJB e Hibernate

3 respostas
I

Olá pessoal,

Estou desenvolvendo um projeto EJB utilizando Hibernate para fazer a persistencia no banco de dados.

Segue meu hibernate.cfg.xml

[i]

<?xml version="1.0" encoding="UTF-8"?> false com.mysql.jdbc.Driver admin jdbc:mysql://localhost/banco root org.hibernate.dialect.MySQLDialect [/i]

E o seguinte metodo de negócio da minha Session Bean

[i]
public void setDeposit(int numberAccount, int value){

SessionFactory sf = new Configuration()

.configure("/hibernate/hibernate.cfg.xml")

.buildSessionFactory();
Session session = sf.openSession();
	 Account acc = new Account();
	 acc.setNumber(numberAccount);
	 acc.setBalance(value);
	 
	 session.save(acc);
	 session.close();

} [/i]

Mas quando faço a chamada para este metodo, a seguinte mensagem de erro aparece :


Bound factory to JNDI name: java:/hibernate/SessionFactory
InitialContext did not implement EventContext

Já procurei algumas soluções, mas tá dificil. Quem puder ajudar agradeceria muito

Obrigado desde já

3 Respostas

P
  1. Um método de negócio NÃO é o lugar de se criar a SessionFactory.
    Leia um pouco mais sobre o processo de inicialização do Hibernate na documentação. Lá vc. verá que a Factory tipicamente é criada apenas uma vez, durante a inicialização da aplicação ou no primeiro acesso. Uma solução comum é usar o Spring para tomar conta disto, ou colocar a chamada à inicialização no método setSessionContext do seu EJB.

  2. Nem todo appserver aceita acesso para escrita no contexo JNDI que é criado ao se fazer o new InitialContext(). No seu caso, a sessionFactory será configurada de forma a se registrar no JNDI (propriedade name=…). Tire isto.

I

Psevestre, vc tem razão, agora me lembrei.

Eu tinha lido em alguma documentação que o Session Factory deve ser criado uma unica vez.

Vou tentar implementar da forma que vc falou.

Valeu pela ajuda !

I

Pseveltre,

Sou iniciante em EJB e Hibernate

vc por acaso tem algum projeto EJB codificado que possa me ajudar como modelo para o que estou estudando.

Obrigado desde já !

Criado 9 de julho de 2007
Ultima resposta 10 de jul. de 2007
Respostas 3
Participantes 2