Pessoal estou com uma dúvida com relação aos nossos amigos os ejb`s.
Quando eu faço o home.create() de um Stateless SessionBean, é criado um novo objeto no servidor de aplicação, ou, o conteiner faz um papel de proxy e retorna um objeto já criado ?
Agora quando eu faço um ejbRemove() eu estou quebrando o vínculo do cliente com o ejb ou estou realmente mantando o serviço no servidor de aplicação, se isso for verdade, qual seria a melhor prática para poder desenvolver sem precisar matar e criar tantos objetos ejb`s ?
Alguém já trabalho com session bean e hibernate ? qual seria uma melhor prática para trabalhar com transação com os dois ? estou usando o jboss…
Os Stateless Session Beans ficam em um pool.(A decisão de quando colocar o Bean no pool é específico de container ).
Quando você chama o create da Remote Home interface o container passa uma referência(na verdade um stub) para o objeto da classe que implementa sua Remote Component Interface(aquela que tem os métodos de negócio e herda da interface EJBObject) do seu Session Bean.
Só quando vc chamar um método de negócio que o container irá pegar um Bean do pool e então associar ao EJBObject ao qual o cliente tem a referência. Quando o método terminar o Bean volta para o pool.
[quote]Agora quando eu faço um ejbRemove() eu estou quebrando o vínculo do cliente com o ejb ou estou realmente mantando o serviço no servidor de aplicação, se isso for verdade, qual seria a melhor prática para poder desenvolver sem precisar matar e criar tantos objetos ejb`s ?
[/quote]
ejbRemove() não funciona para Stateless Sessions Beans pois fica cargo do container decidir quanto ao ciclo de vida deste Bean.
Já para Stateleful fa sentido. Pois ai sim vc estará liberando recursos.
Você pode utilizar o hibernate como serviço do Jboss.
Quanto as transações o hibernate irá utilizar o gerenciador de transações do
Jboss.
Dê uma olhada neste post. http://www.guj.com.br/forum/viewtopic.php?t=16422
Tem uma descrição e refência de como utilizei o comentado acima.