Onde está sendo executado esse código, em um Servlet puro, ou em um JSP? Se for em um JSP há vários web containers (tal como o iPlanet Application Server 6.5) que não permitem que se faça o que você quer fazer, não obstante o que está definido na especificação de servlets.
N
nandohs
Esse codigo esta em um Servlet puro e utilizo o SUN ONE 7.
O gif aparece na tela, porem a excecao eh disparada…
amilhoranza
Se alguém souber como fazer isso eu agradeço, pois estou com o mesmo problema.
Rafael_Steil
Isso ocorre quando uma chamada a getWriter() eh feita apos a chamda a response.getOutputStream();, ou vice-versa. Verifique o seu codigo por algo que chame o getOutputStream() ou getWriter() mais de uma vez.
Rafael
N
nandohs
Cara… na verdade isso acontece dependendo do servidor de aplicacao utilizado, no caso o SUN ONE 7(me parece q no 8 tb).
Bom… para solucionar o problema retorne uma string do seu metodo a partir de um ByteArrayOutputStream.
No JSP faca… out.println( xxxx.geraImagem( pageContext ));
Cuidado no JSP !!! Nao pode haver quebra de linha fora do scriplet… Estranho mas eh isso mesmo…
Espero ter ajudado…
Flw
amilhoranza
O problema é que eu uso um jsp pra retornar a imagem e ele automáticamente chama o getWriter() me disseram que eu tenho que usar um servlet “puro” pra fazer isso.
Alguém saberia como fazer ?
_fs
Utilizando o Jetty também recebo essa exceção quando abro páginas que fazem requisições a um servlet e também contém imagens, que são geradas a partir de outro servlet.
Mas no meu caso só é irritante, pois as imagens são mostradas corretamente.
Rafael_Steil
amilhoranza:
O problema é que eu uso um jsp pra retornar a imagem e ele automáticamente chama o getWriter() me disseram que eu tenho que usar um servlet “puro” pra fazer isso.
Alguém saberia como fazer ?
Faca no servlet
Rafael
amilhoranza
Galera Descobri o problema !!!É só tirar as quebras de linha do jsp que exibe a imagem exemplo:Eu tinha o seguinte código no meu jsp que exibe a imagem<jsp:useBean id=“img” scope=“page” class=“com.catho.Boleto” /><%response.setContentType(“image/jpeg”);response.setHeader(“Pragma”,“no-cache”);response.setHeader(“Cache-Control”,“no-cache”);response.setDateHeader(“Expires”,0);%><%!booleanretorno;%><%!Stringbarras;%><%barras=request.getParameter(“p_barra”);retorno=img.criaImagem(barras,pageContext,50);%>
Não deixe quebras de linha no jsp senão ele vai chamar o getWriter() pra escrever um “< BR >”
amilhoranza
Só corrigindo o post acima, não é que chama o getWriter("< br >") ele chama o out.print("\r\n");
magnus
Pessoal…q esquisito…tirei as quebras de linha e deu certo mesmo…
Toh usando Tomcat
arthurminarini
estou com o mesmo problema mas memo tirando as quebras não deu
anagrrrl
estou com esse problema, mas quando gero um arquivo excel…
usando classes do jfree chart
R
rvoltz
Pessoal,
sei que esse tópico é um pouco antigo, mas estive com o mesmo problema. Consegui solucionar, basta fazer um out.clear() antes de chamar outStream.write();
Se alguém precisar segue exemplo abaixo:
if(request.getParameter("file")!=null){Filearquivo=newFile("C:\\Documents and Settings\\alunos\\Desktop\\SiteAlexandre\\web\\JARs\\"+request.getParameter("file"));InputStreamin=newFileInputStream(arquivo);byte[]buffer=newbyte[(int)arquivo.length()];ServletOutputStreamdownload=response.getOutputStream();response.reset();response.setHeader("Content-disposition","attachment;filename="+request.getParameter("file"));response.setContentType("application/zip");response.setContentLength(buffer.length);intnLidos;while((nLidos=in.read(buffer))>=0){download.write(buffer,0,nLidos);}download.flush();download.close();download.close();}