Que bug é esse

2 respostas
spranta

Eu tenho uma classe que gera uma imagem e associa esta imagem a um objeto do tipo ServletOutputStream para exibi-la na jsp, no entanto, nesta classe quando eu chamo o metodo response.getOutputStream() a exceção abaixo é lançada indicando que eu já chamei o metodo getWriter(), no entanto, em nenhum momento da minha aplicação eu chamo o getWriter, é o proprio servidor de aplicação quem o está chamando, enfim, acho que preciso substituir o metodo getOutputStream por outro, ou será que nao vai resolver? Gostaria da ajuda de voces
Exceção lançada:

java.lang.IllegalStateException: Tried to call getOutputStream() after calling getWriter()

Desde já agradeço a atenção de todos

2 Respostas

Rafael_Steil

Esta fazendo tudo no JSP? Note que nesse caso vc nao pode ter enviado qualquer tipo de conteudo para o browser ainda. … ou seja, nao pode ter nem um unico espaco em branco, caso contrario o getWriter() sera automaticamente executado, impedindo assim que o seu codigo funcione.

Rafael

spranta
Oi Rafael, vou tentar explicar melhor o problema pois eu nao entendi muito bem a sua dica. A situação é que eu tenho uma pagina em que me aparece aquelas imagens aleatorias que pedem ao usuario para digitar os caracteres da imagem em um campo para então prosseguir com a ação, uma especie de robo, pois então, nesta pagina onde esta imagem aparece eu tenho o seguinte link:
img src="exibe_imagem.jsp?w=150&h=50"
Ou seja, o fonte dessa imagem aponta para um jsp que é o que está listado abaixo:
<%@ page import="pacote.Image" %>
<jsp:useBean id="img" scope="page" class="pacote.Image" />
<%
response.setContentType("image/jpeg");
response.setHeader ("Pragma", "no-cache");
response.setHeader ("Refresh", "10");
response.setDateHeader ("Expires",0);
String w,h;
w = request.getParameter("w");
h = request.getParameter("h");
//Matriz para criar o texto para imagem
String[] str = {"2","3","4","5","6","7","8","9", "a","A","b","B","c","C","d","D","e","E","f","F", "g","G","h","H","j","J","k","K","m","M","n","N", "p","P","q","Q","r","R","s","S","t","T","u","U", "v","V","x","X","z","Z"};
//RETORNA UMA STRING COM QUATRO CARACTERES ALEATORIOS
String codigo = "";
for(int i=0; i<4; i++){
	codigo += str[(int)(Math.random()*str.length)];
}
session.setAttribute("robo",codigo);
retorno = img.criaImagem(codigo,pageContext,Integer.parseInt(w),Integer.parseInt(h));
%>
Ou seja, este jsp cria a string aleatorioa, armazena em sessao e chama de um bean a função para criar a imagem, no entanto, já nas primeiras linhas deste bean, onde atraves do pageContext eu pego o InputStream é lançado o erro, o codigo eu também coloquei logo abaixo:
HttpServletResponse response;
		response = (HttpServletResponse)pageContext.getResponse();
		ServletOutputStream out = response.getOutputStream();

Enfim, nesta ultima linha dá o erro que eu já citei no post anterior.
Espero ter esclarecido melhora o contexto geral e fico no aguardo de uma breve resposta que possa me ajudar a solucionar este problema.

Criado 3 de março de 2005
Ultima resposta 4 de mar. de 2005
Respostas 2
Participantes 2