estou trabalhando com vraptor e estou integrando umas tecnologias de webservice a minha aplicação e queria ter no meu webservice injeção de dependencia, como o meu WS é integrado com spring, axo que é possivel, sendo que atualmente quem faz o trabalho de Injeçao de Dependencia é o vRaptor, então dessa forma ele nao consegue efetuar essa injeçao no meu webservice pois nao é o vRaptor que cria, queria saber se é possivel deixar o Spring efetuando a Injeçao de Dependencia tanto no vRaptor quanto no WebService, para poder ter somente o spring cuidando dos dois.
andei lendo sobre providers do vraptor mais não sei se por default já tem alguma configuração pronta do proprio vraptor para isso.
Então cara, o VRaptor USA o Spring para injetar as dependências…
É só vc ver nos jars adicionado no seu projeto…
Você tem 3 possíveis containers:
Spring
Google Guice
Pico container
Se vc tiver o jar do pico, ele vai usar o pico, se vc tiver os jars do Spring, ele vai usar o Spring, se vc tiver os jars do Guice, ele vai usar o Guice…
Tome cuidado para não ter mais de um desses containeres…
M
maaarkin
então, acabei de olhar aqui e tenho o guice, porem spring e pico, não vejo, preciso deixar o Spring como provider, onde encontro a lib do spring para baixar? e no caso quando baixar, preciso remover esse do guice?
Rafael_Guerreiro
Precisa remover o do guice sim…
Você está usando Maven? Se sim, no seu pom vc pega os jars do Spring…
Se não, os jars do Spring vêm junto com o arquivo do VRaptor…
M
maaarkin
sem querer ser abusado, mais qual é o nome do .jar do spring que precisa para o provider? pq baixei o vraptor blank e não estou encontrando.
queria saber agora como efetuar a injeção de dependencia no webservice, porem a classe que ele vai chamar é meu UsuarioDAO, e usuario dao tem uma Session session no construtor, quando eu fizer a injeção de dependencia no webservice, ele tambem vai setar a sessao igual ele faz no vraptor? ou não?
Rafael_Guerreiro
Faça um teste…
M
maaarkin
Bem, vamos aos testes. Primeiramente vou mostrar como está minhas classes:
Meu WS:
@WebServicepublicclassHelloWorldWS{//DI via SpringHelloWorldBohelloWorldBo;privateUsuarioRepositoriousuario;@WebMethodpublicintsomar(inti,intj){returni+j;}@WebMethod(exclude=true)publicvoidsetHelloWorldBo(HelloWorldBohelloWorldBo){this.helloWorldBo=helloWorldBo;}@WebMethod(operationName="getHelloWorld")publicStringgetHelloWorld(){returnhelloWorldBo.getHelloWorld();}@WebMethod(operationName="mostraUsuarios")publicintmostraUsuarios(){System.out.println(usuario);returnusuario.listAll().size();}}
<!-- Definições do JAX-WS + Spring WebService --><wss:bindingurl="/hello"><wss:service><ws:servicebean="#helloWs"/></wss:service></wss:binding><!-- Web service methods --><beanid="helloWs"class="br.com.rhunificado.webservices.HelloWorldWS"><propertyname="helloWorldBo"ref="HelloWorldBo"/></bean><beanid="HelloWorldBo"class="br.com.rhunificado.webservices.HelloWorldBoImpl"/>//<beanid="UsuarioRepositorio"class="br.com.rhunificado.dao.UsuarioDAO"/>comenteiparaveroquedava,edáobjetoNULL,seeudescomentarelequandovaiinstanciardáoerror"nodefaultconstructor"porcausadohibernatesession.temalgumaluz?
Rafael_Guerreiro
Acho que você vai precisar criar uma configuração dessa para o Spring reconhecer o seu Session e o SessionFactory…
Não tem como fazer isso por annotation do Spring?
M
maaarkin
ai que está sou novo nesse mundo kkk, estou aprendendo muuuito agora, porem ainda nao conheço um caminho para isso, por enquanto estou estudando para ver uma possivel solução, uma possivel solução boa e nao uma gambi xD.