Call Servlet to Servlet - Pegar resposta

4 respostas
fillipeweb

Pessoal,

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.

URL url = new URL("URL");

			connection = (HttpURLConnection) url.openConnection();
			connection.setRequestProperty("Request-Method", "GET");
			connection.setDoInput(true);
			connection.setDoOutput(false);
			connection.connect();
		
			InputStream inputStream = connection.getInputStream();

Alguem tem alguma sugestão?

4 Respostas

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.

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

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.

Criado 30 de dezembro de 2008
Ultima resposta 30 de dez. de 2008
Respostas 4
Participantes 4