Olá pessoal, andei vendo que o vraptor tem otima integraçao com WS Rest, mais a empresa que estou trabalhando necessita que a aplicação possa Servir e Consumir SOAP, e estou trabalhando com vRaptor, não encontrei documentos que informem como efetuar isso para SOAP, é possivel haver essa integração? se sim, existe algum documento do qual eu possa me basear para começar a desenvolver?
atualmente, eu possuo esse webservice:
package br.com.goodbuy.webservices;
import javax.jws.WebMethod;
import javax.jws.WebService;
import br.com.goodbuy.model.Usuario;
@WebService(endpointInterface = "br.com.goodbuy.webservices.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString() {
return "Hello World JAX-WS";
}
//@Override
//@WebMethod
//public Usuario getUsuario(int codigo) {
// chamasse meu UsuarioDAO e retornasse o objeto passando o id.
//}
}
e ja esta funcionando, tudo direitim, minha aplicação já está disponibilizando esse webservice, só que agora eu queria que esse metodo getUsuario pudesse acessar meu UsuarioDAO para chamar o metodo .load(int id)
veja como está meu UsuarioDAO()
[code]package br.com.goodbuy.dao;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.Session;
import br.com.caelum.vraptor.ioc.Component;
import br.com.goodbuy.model.Usuario;
import br.com.goodbuy.repositorio.UsuarioRepositorio;
@Component
public class UsuarioDAO extends GenericDAO implements UsuarioRepositorio {
public UsuarioDAO(Session sessao) {
super(Usuario.class, sessao);
}
@Override
public Usuario findUserByEmail(String email) {
String hql = "select u from Usuario u where u.email = :email";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("email", email);
return super.findOneResult(hql, parameters);
}
}
[/code]
só que quem passa essa session é o vraptor, só que o webservice, quando chamar a classe nao possue a Session, e nem o vraptor vai passar pq nao é ele quem cria o webservice, queria saber como poderia fazer isso? obs, não posso utilizar o restful pq vou trabalhar com soap. e que possivelmente vou precisar persistir dados no banco da aplicaçao do vraptor que vao vir do webservice, pois tanto vou servir quanto vou consumir e quando consumir PODE SER que eu precise persistir alguns dados, se caso eu precise como efetuarei isso? pq preciso garantir o rollback e commit dos dados.
como eu já te respondi na lista de emails, com o VRaptor só aproveitando a integração do Spring…
mas vc pode atingir isso facilmente usando Java EE 6 (com EJBs ou CDI pra criar os componentes).
recebendo o EntityManager como @PersistenceContext, o proprio servidor cuida de tudo.
bem, antes de mais nada, nao sabia que o pessoal do email tambem era o que ajudava aqui, vou parar lá no email e continuar aqui é melhor pra evitar respostas repetidas.
então, por favor, esqueça lá e desculpa.
então Lucas, receber o Hibernate Session como @PersistenceContext, o proprio servidor cuida de tudo? mais eu to utilizando um plugin que você me indicou o vraptor hibernate, que ele já cuida do commit e do rollback, ou seja garante uma transação pra mim, se eu utilizar esse context, vou ter garantia dessa transação (commit, rollback…) ?
obs: estou usando tomcat 7, mais uma vez, peço desculpas por essas perguntas é pq estou ainda engatinhando no vraptor e preciso saber se continuo ou não com essa tecnologia e o principal para continuar é essa questão do webservice que precisa ser soap e que possa ser que precise servir e consumir dados e serviços que estão na minha logica ou servir dados que estão no meu bd e preciso garantir que os dados sejam transacionados (garantir o rollback e tudo mais).
isso não funciona com tomcat, vc tem que usar o JBoss, ou o GlassFish ou o WebLogic… qualquer servidor de aplicação.
E não seria a Hibernate Session, e sim o EntityManager.