Tenho uma aplicação WEB que gera um boleto bancário em PDF e outro em HTML, quando eu faço um deploy do arquivo .war na minha máquina que é windows funciona que é uma beleza, porém quando eu faço um deploy no servidor linux já em produção, e gero o boleto tante m PDF, quanto em HTML é retornado uma página em branco, alguém pode me ajudar?
Segue o Servlet:
[b]
importjava.io.File;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.Connection;importjava.util.HashMap;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JRExporterParameter;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.JasperRunManager;importnet.sf.jasperreports.engine.export.JRHtmlExporter;importnet.sf.jasperreports.engine.export.JRHtmlExporterParameter;importnet.sf.jasperreports.j2ee.servlets.ImageServlet;importbr.com.webdec.util.ConexaoDB;@SuppressWarnings("serial")publicclassBoletoServletextendsHttpServlet{privatestaticStringjavaPath;Connectionconn;publicBoletoServlet(){}@SuppressWarnings("static-access")publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse){if(this.javaPath==null){this.javaPath=this.getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"classes"+File.separator);}Stringrelatorio=request.getParameter("relatorio");try{geraBoleto(request,response,relatorio);}catch(JRExceptionerro){erro.printStackTrace();}catch(Exceptione){e.printStackTrace();}}@SuppressWarnings("unchecked")publicvoidgeraBoleto(HttpServletRequestrequest,HttpServletResponseresponse,Stringversao)throwsJRException,Exception{HttpSessionsessao=request.getSession(true);HashMapparametros=newHashMap();parametros.put("pID_BOLETO",(String)sessao.getAttribute("id_boleto"));parametros.put("pNOME_ADOTANTE",(String)sessao.getAttribute("nome_adotante"));// conexão com o bancoConexaoDBbanco=newConexaoDB();if(versao.equals("boletopdf")){Stringrelatorio=javaPath+File.separator+"boletojmm2.jasper";try{byte[]pdf_boleto=JasperRunManager.runReportToPdf(relatorio,parametros,banco.getConnection());ServletOutputStreamout=response.getOutputStream();response.setContentType("application/pdf");response.setHeader("Content-Disposition","attachment; filename=relatorio.pdf");out.write(pdf_boleto);}catch(IOExceptionerro){erro.printStackTrace();}}else{Stringrelatorio=javaPath+File.separator+"boletojmmhtml.jasper";JasperPrintrelatorioFinal=JasperFillManager.fillReport(relatorio,parametros,banco.getConnection());PrintWriterprintWriter=response.getWriter();JRHtmlExporterhtmlExporter=newJRHtmlExporter();response.setContentType("text/html");request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,relatorioFinal);htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,relatorioFinal);htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER,printWriter);htmlExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,"ISO-8859-1");htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,request.getContextPath()+File.separator+"image.servlet?image=");htmlExporter.exportReport();}}}
Não mostra nenhum erro, só aparece a página em branco
alves.Felipe
cara… não gostei muito da cara dessa váriavel javaPath
no seu pc vc consegue acessar a WEB-INF?
faz imprimir no console essa variavel e ve se ta certo…
joga seu .jasper dentro de uma pasta no WebContent… e depois testa…
cara… mas dentro do seu webContent existe o diretorio boleto?
e dentro deste existe o arquivo boletojmmhtml.jasper ?
cara eu uso assim:
getServletContext().getResourcePaths(“boleto”+File.Separator);
vmoreira
Sim, eu criei agora, com este código que está agora, no eclipse funciona tranquilo, não traz mais o path do c: mas quando eu rodo no browse ele diz que não encontrou o arquivo.
mas usando o realpath ele vai me retornar o path do windows, o que eu quero que ele puxe o arquivo é no servidor linux, onde irá ficar o war.
alves.Felipe
TA mas quando vc estiver no linux vai pegar o caminho do linux…
mas de qq forma deixa um print no console… ai vc vai vendo se esta certo ou nao
vmoreira
Não funcionou, eu estou fazendo o deploy no servidor linux através da minha máquina que é windows, pelo browse, isso tem algum problema?? Na minha máquina ficou uma maravilha, funcionou perfeitamento, só quando faço o deploy lá não funciona…
Sabe me dizer se toda vez que eu fizer um deploy no linux tenho que reinicar o tomcat ?
alves.Felipe
a principio não precisa… só precisa reiniciar o tomcat, se não fizer o deploy certo… mas se vc consegue acessar sua aplicação…
acho q não tem necessidade…
e oque sai no print do caminho do arquivo, no servidor linux?
vmoreira
qual arquivo que eu vejo no linux, pois já verifiquei os arquivos de log dentro da pasta tomcat no linux e não tinha nenhum problema lá…