Tenho uma aplicação Java Web com Struts. Eu estou acessando uma aplicação JSF, Spring, Seam e Hibernate através de RMI.
No método chamado via RMI, eu necessito do getSession() de um dao que extende HibernateDAOSupport que é gerenciado pelo Spring e Seam…
No entento a sessão retorna somente null.
Eu preciso que o Seam injete uma instancia do DAO na classe que é chamado pelo RMI.
Você poderiam me ajudar com isso?
Ou mesmo ajudar em um jeito diferente de fazer?
Estou com o mesmo problema, não consigo fazer com que o Seam injete o DAO automaticamente na variável que criei o que gera um NullPointerException na hora de utilizar o objeto.
Veja o código do meu método que é acessado pelo RMI:
Embora eu não conheça o SEAM, ainda assim acho a questão esquisita.
Vai ver não entendi direito.
Na minha opinião, quem deveria injetar alguma coisa no serviço deveria ser o Spring e o seam deveria ficar fora desta região.
E ai, chutei muito fora?
flws
vhmolinar
fantomas você não entendeu mesmo.
Veja annotation da injeção de variáveis do seam que estou usando: import org.jboss.seam.annotations.In;
ACDias
Eu também não sou um expert em nenhuma destas tecnologias, mas acredito que neste caso, o Seam gerencie toda a parte de injeção de instâncias em seus componentes, isto inclui as que são do Spring (como os DAOs). Da forma como foram integrados Seam e Spring, o segundo parece ser dependente do primeiro para ser iniciado.
Eu creio que o problema ocorra mais por que não existe o ciclo de vida do JSF nestas chamadas, assim o Seam não injeta e nem cria o componente.
Me corrijam se eu estiver errado.
fantomas
Mas é justamente por isso que acho estranho!
Utilizar dois mecanismos de injeção pode deixar a coisa meio confusa.
Se achar realmente necessário (no mínimo deve ser interessante) utilize o Spring para os serviços, repositórios, daos, transações e etc… e deixa o resto com o seam.
flws
fantomas
ACDias:
Eu também não sou um expert em nenhuma destas tecnologias, mas acredito que neste caso, o Seam gerencie toda a parte de injeção de instâncias em seus componentes, isto inclui as que são do Spring (como os DAOs). Da forma como foram integrados Seam e Spring, o segundo parece ser dependente do primeiro para ser iniciado.
Eu creio que o problema ocorra mais por que não existe o ciclo de vida do JSF nestas chamadas, assim o Seam não injeta e nem cria o componente.
Me corrijam se eu estiver errado.
Isto parece fazer sentido!
Confirma?
flws
vhmolinar
Não estou conseguindo fazer com que a aplicação ao receber uma chamada via RMI entre no ciclo de vida do JSF. Devido à isso que o Seam não injeta as variáveis.
Tentei usar na minha classe a seguinte notação de scopo:
mas mesmo assim continua sem funcionamento, ele não consegue injetar minha variável:
@In("#{userDao}")privateUserDAOuDao;
parece que ninguém teve esse problema ainda :(.
B
bKn
Me responde uma coisa, onde o Spring é usado na sua aplicação? Se não é ele quem faz a injeção de dependência, o que ele faz? Gerenciamento de segurança?
_
_sic_
Por que você está utilizando ‘#{}’ no nome do seam component utilizado na anotação @In?
ACDias
sic:
Por que você está utilizando ‘#{}’ no nome do seam component utilizado na anotação @In?
Porque o componente a ser injetado não é do Seam e sim do Spring.