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.