Bem, antes de mais nada, sim vou precisar sim trabalhar com webservice, só que é o seguinte, andei dando uma boa olhada no material que o pessoal respondeu mais nao consegui chegar até minha duvida.
Preciso utilizar um webservice e preciso garantir que ele pegue um Session hibernate, só que quem está passando essa session atraves de injeção de dependencia é o vraptor com o plugin vraptor-hibernate, ele é quem faz o rollback e commit atraves da session que ele cria, e quem cria o WS nao é o vraptor, bem, o que eu pensei primeiramente é criar um interceptor da seguinte forma:
@Intercepts
public class TransactionInterceptor implements Interceptor {
private final Session session;
public HibernateTransactionInterceptor(Session session) {
this.session = session;
}
public void intercept(InterceptorStack stack, ResourceMethod method,
Object instance) {
Transaction transaction = null;
try {
transaction = session.beginTransaction();
stack.next(method, instance);
transaction.commit();
} finally {
if (transaction.isActive()) {
transaction.rollback();
}
}
}
public boolean accepts(ResourceMethod method) {
return true; //aceita todas as requisições
}
}
e criar uma fachada que se comunicará com o webservice e essa fachada terá os metodos @transactional, minha duvida é: quando o webservice se comunicar com essa fachada o vraptor criará o interceptor onde injetará a session e interceptará esses metodos garantindo pra mim que ele seja transactional? ou nem mesmo o vraptor chegará a criar esse interceptor?
espero que tenha sido claro, estou imperrado e precisando utilizar esse webservice e não queria deixar de utilizar o vraptor.
obs: em momento algum o webservice chegará a conhecer o Controller.
cara, você ainda nao está entendendo, suponha que ja tem um webservice que precisa acessar minha aplicação vraptor(minha aplicação vraptor possui os controlladores, classes dao que acessam o banco) eu quero que o webservice acesse a classe usuarioDAO e possa listar os usuarios.
eu quero saber se na classe do wscliente quando eu chamar o usuarioDAO que possui uma Session no construtor, se o vraptor vai passar essa sessao, é somente essa minha duvida.
mais infelizmente a empresa que trabalho nao vai poder trabalhar dessa maneira, ou seja, atraves do http, preciso servir alguns serviços da minha aplicação vraptor, como por exemplo listar os usuarios cadastrados, porem quem cuida da injeção do hibernate Session é o vraptor, e estou apanhando para conseguir de alguma maneira repassar isso para o webservice sem que o webservice passe por um controller.
Lucas, o webservice com o spring (JAX-WS + Spring), fiz helloworld para teste e já consegui e já está funcionando aqui app Context, libs, tudo direitim.
quanto ao spring como provider, você tem algum material daqui ou do proprio vraptor para fornecer? estou buscando aqui.
lembrando que eu preciso garantir o commit e rollback dos dados, e isso na minha aplicação está sendo feito pelo vraptor-hibernate.jar, vai afetar em algo se eu deixar o spring como provider?