2016-02-29 69 views
0

我刚刚实现了一个Jasper报告来从运行在tomcat 7上的java web应用程序生成一个pdf文档,但是当我的电脑上生成报告时出现一个java图标(img1。 PNG),如果我关闭“Java应用程序”停止我的Tomcat服务器和我的web应用程序的执行,这是我的PDF生成方法的代码:创建一个PDF Jasper Report,终止服务器执行

.xhtml按钮:

<h:form> 
    <h:commandButton actionListener="#{menuController.jasperTestOne}" value="Jasper PDF" /> 
</h:form> 

后端java代码:

public void jasperTestOne() { 
     try { 
      Map<String,Object> parametros= new HashMap<String,Object>(); 
      parametros.put("PRINT_BY", "SomeUser"); 

      String jPath = "/Users/Documents/pdf/jasper/test.jasper"; 
      File jasper = new File(jPath); 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasper.getPath(),parametros, new JRBeanCollectionDataSource(this.getItems())); 

      HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
      response.addHeader("Content-disposition","attachment; filename=jsfReporte.pdf"); 
      ServletOutputStream stream = response.getOutputStream(); 

      JasperExportManager.exportReportToPdfStream(jasperPrint, stream); 

      stream.flush(); 
      stream.close(); 
      FacesContext.getCurrentInstance().responseComplete(); 
     } catch(Exception ex) { 
      System.out.println("JASPER ERROR: " + ex.getMessage()); 
     } 
    } 
+0

你检查日志文件吗?什么是堆栈跟踪? –

回答

1

“java应用程序”是Tomcat进程。 OSX开始在扩展坞中显示图标,因为JasperReports在生成报告时使用一些图形资源来测量文本。

创建PDF不会终止服务器进程,当您从停靠栏关闭应用程序时,进程终止。如果您将应用程序保留在Dock中,Tomcat将继续运行。

如果您不想在扩展坞中看到Tomcat进程,则可以将-Djava.awt.headless = true添加到Tomcat Java选项。

+0

是的,当我从码头关闭应用程序时Tomcat进程结束了,我只是担心它,谢谢你的回应你是对的。 –