Problema para gerar PDF dentro de um iframe com JSF

3 respostas
D

pessoal estou com um problema a dias e nao estou conseguindo resolver peço a ajuda dos amigos de profissão

O que ocorre, tenho que pegar um PDF de um servidor ftp e baixar para a pasta do usuario (user.home), em seguida eu acesso esta pasta que exibe este PDF dentro de um iframe.
Ate esta parte esta funcionando blzinha, o que acontence é que quando eu faço este processo denvo eu tomo este erro “getOutputStream() has already been called for this response”, lembrando que este PDF estou gerando em um Servlet separado pq não achei uma forma de faze-lo com o primefaces, se alguem souber uma forma mais simples por favor me ajude, bom vou colocar o codigo pros amigos verem, eu acredito que o JSF que esteja diaparando este erro:

stacktrace

Jun 10, 2012 11:57:31 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/DigitalizacaoApp] threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
	at org.apache.catalina.connector.Response.getWriter(Response.java:637)
	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
	at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:723)
	at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:431)
	at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:71)
	at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:582)
	at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:115)
	at org.primefaces.context.PrimePartialResponseWriter.startDocument(PrimePartialResponseWriter.java:205)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:123)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

segue o meu Servlet

public void exibeImagen(HttpServletRequest request, HttpServletResponse response, String nome){

		InputStream in 				= null;
		OutputStream outs 			= null;
		String userHome 			= null;

		try {  

			
			
			
			userHome = System.getProperty("user.home");
			File file = new File("C:\\Users\\Meinel\\img\\comprovante Luz pag 14042011.pdf"); 

			if(file.exists()){

				response.setHeader("application/pdf", "Content-Type");    
				response.setContentType("application/pdf");

				outs = response.getOutputStream();
				in = new BufferedInputStream(new FileInputStream("C:\\Users\\Meinel\\img\\comprovante Luz pag 14042011.pdf"));  

				byte[] buf = new byte[4 * 1024];  // 4K buffer  
				int bytesRead;  
				while ((bytesRead = in.read(buf)) != -1) {  
					outs.write(buf,0,bytesRead);  
				} 
				
				
				
				outs.flush();
				outs.close();
				in.close();
			}		


		} catch(Exception e){
			e.getMessage();
		}finally{


		}
	}

eu chamo ele dentro do meu iframe assim

<iframe src="imagem" width="85%" frameborder="1" name="pedf" id="pdf" style="height:750px;" scrolling="auto" title="Imagem digitalizada" />

e no meu bean estou chamando assim:

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();  
			HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();  
	
			
			
			ServeltInagen sever = new ServeltInagen();
			sever.exibeImagen(request, response,arquivo);

por favor gente me ajuda, nao quero nada pronto, so preciso de uma luz pra pode seguir…

abraço pessoal e obrigado!!!

3 Respostas

D

da uma força ai pessoal UP

D

UP

pessoal estou necessitando muito de ajuda ja nao sei mas o que fazer por favor me de uma luz…

abraço!!!

A

Quando você debuga o código, aonde exatamente está apresentando o erro?

Criado 10 de junho de 2012
Ultima resposta 12 de jun. de 2012
Respostas 3
Participantes 2