Problema ServletOutputStream

1 resposta
andrejusti

Pessoal seguinte tenho um relatorio em jasper que quando gravado é gravado com sucesso, só que agora preciso guardalo em memoria e mostrar no browser...
porem está gerando um exception que não sei uque é...

preciso de uma luz...

Segue o codigo
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(arrayMap);

			byte[] bytes = null;
			bytes = JasperRunManager.runReportToPdf(relatorio, map, ds);
			if (bytes != null && bytes.length > 0) {
				response.setContentType("application/pdf");
				response.setContentLength(bytes.length);
				ServletOutputStream ouputsOutputStream = response.getOutputStream();
				ouputsOutputStream.flush();
				ouputsOutputStream.close();
			}
EXCEPTION
org.mortbay.jetty.EofException
	at org.mortbay.jetty.HttpGenerator.flushBuffers(HttpGenerator.java:856)
	at org.mortbay.jetty.HttpConnection.flushResponse(HttpConnection.java:510)
	at org.mortbay.jetty.HttpConnection$Output.close(HttpConnection.java:750)
	at br.com.jexperts.report.RelatorioDirf.execRelatorio(RelatorioDirf.java:91)
	at br.com.jexperts.services.ejb.FinanceiroServices.enviarDirfFinanceior(FinanceiroServices.java:131)
	at br.com.jexperts.web.unimed.financeiro.FinanceiroAction.enviarFinanceiroDirfAction(FinanceiroAction.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at br.com.jexperts.web.controller.ControllerServlet.doGet(ControllerServlet.java:246)
	at br.com.jexperts.web.controller.ControllerServlet.doPost(ControllerServlet.java:114)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
	at org.mortbay.jetty.Server.handle(Server.java:269)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:701)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:617)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
	at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.nio.channels.ClosedChannelException
	at sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:126)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:324)
	at org.mortbay.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:163)
	at org.mortbay.jetty.nio.HttpChannelEndPoint.flush(HttpChannelEndPoint.java:150)
	at org.mortbay.jetty.HttpGenerator.flushBuffers(HttpGenerator.java:784)
	... 26 more
2010-01-27 15:46:28.917::WARN:  /webmedcrm/action/enviarFinanceiroDirf_Financeiro_Unimed_Financeiro.jexp: 
java.lang.IllegalStateException: STREAM
	at org.mortbay.jetty.Response.getWriter(Response.java:502)
	at br.com.jexperts.web.controller.ControllerServlet.doGet(ControllerServlet.java:394)
	at br.com.jexperts.web.controller.ControllerServlet.doPost(ControllerServlet.java:114)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
	at org.mortbay.jetty.Server.handle(Server.java:269)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:701)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:617)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
	at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
2010-01-27 15:46:28.937::WARN:  /webmedcrm/action/enviarFinanceiroDirf_Financeiro_Unimed_Financeiro.jexp
java.lang.IllegalStateException: STREAM
	at org.mortbay.jetty.Response.getWriter(Response.java:502)
	at br.com.jexperts.web.controller.ControllerServlet.doGet(ControllerServlet.java:394)
	at br.com.jexperts.web.controller.ControllerServlet.doPost(ControllerServlet.java:114)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
	at org.mortbay.jetty.Server.handle(Server.java:269)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:701)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:617)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
	at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

OBS: CONSIGO SALVAR SEM ERRO...

1 Resposta

Mero_Aprendiz

Acredito que o erro seja porque você está limpando (flush) e depois fechando (close) dentro de uma execução de um Action (br.com.jexperts.web.unimed.financeiro.FinanceiroAction.enviarFinanceiroDirfAction) do Struts.
Talvez uma melhor forma de escrever isso no cliente seja jogar os dados (arrayMap) na sessão, e depois dar redirecionar para um Servlet normal mesmo, daqueles que são mapeados no web.xml, e lá você manda escrever no cliente.

[]'s
JL

Criado 27 de janeiro de 2010
Ultima resposta 27 de jan. de 2010
Respostas 1
Participantes 2