Estou com o seguinte problema, preciso chamar uma servlet a partir de outra e conseguir pegar a resposta que nesse caso seria um documento em PDF. Mas o problema é que essas duas servlets tem que compartilhar a mesma sessão pois há informações na sessão que as duas necessitam.
Hoje estou fazendo da seguinte forma, funciona perfeitamente mas a servlet chamada a partir da outra não enxerga a mesma sessão.
as servlets estao no mesmo servidor??? Tente pegar o id da sessao e concatene na url… talvez funcione.
Me parece um pouco estranho você invocar outra setvlet. Extraia o código comum pra outro componente e faça com que ambas as servlets o chamem.
fillipeweb
marcelo_mococa:
as servlets estao no mesmo servidor??? Tente pegar o id da sessao e concatene na url… talvez funcione.
Me parece um pouco estranho você invocar outra setvlet. Extraia o código comum pra outro componente e faça com que ambas as servlets o chamem.
É o seguinte, tenho uma servlet que retorna um PDF, e uma outra que manda email anexando um pdf. Então para aproveitar a funcionalidade de geração de PDF para anexar ao email que vou enviar estou chamando minha servlet que gera esse PDF.
A
andreban
Bom, primeiramente vejo um problema de design. Os dois servlets deveriam chamar o mesmo código que gera o PDF e nao um servlet chamar o outro para gerar o PDF.
Mas se quiser fazer assim do mesmo jeito, vc pode no primeiro servlet criar um HttpServletResponse próprio e fazer um include do segundo servlet, passando esse seu response fake como parametro. Esse response fake vai ter que ter algumas copias de dados do original, como a sessão por exemplo. Aí, na volta do include vc pega o conteúdo do outputstream e coloca no e-mail…
É uma solução meio tosca, mas deve funcionar. Recomento mesmo é fazer um refactoring.
Abs
furutani
Nesse caso o mais interessante seria o servlet que envia email chamar o mesmo código do servlet que gera o PDF e não chamar o servlet em si.