gpt4 book ai didi

java - Jasper Report 生成 PDF,然后 Glassfish 崩溃/关闭

转载 作者:行者123 更新时间:2023-12-01 15:55:40 24 4
gpt4 key购买 nike

我正在运行一个用 JSF/Java 开发的应用程序,一旦我让 JasperReports ExporttoPDFFile 开始工作并运行该应用程序,jrxml 就会被编译并显示,然后导出到 pdf 文件,看起来与它完全相同应该并且正确的页面由 JSF 返回并加载,但随后 Glassfish 3 停止工作,我必须启动或重新启动它,然后才能继续使用该应用程序,一切正常,直到 JasperReports 编译和导出...任何想法?

http://pastebin.com/mPwYvWh9 <--- 运行/崩溃后的 Glassfish 服务器日志

JSF页面

 <ui:define name="content">
<f:view>
<h:form styleClass="form_option">

<h:outputLabel value="Enter a query:"/>
<h:inputText value="#{controls.sql}" />
<h:commandButton action="#{controls.make}" value="Query"/>

<h:commandButton action="#{controls.reportGenerate}" value="Generate Report"/>

</h:form>
<br />
<h:form styleClass="form_option">
<h:outputLabel value="Choose a Query or Report on the Left"/>

<h:outputText escape="false" value=""/>


</h:form>

</f:view>
</ui:define>

代码

public String reportGenerate()
throws JRException, ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException{

String connectionURL = "jdbc:oracle:thin:@server:1521:ora";
String dbDriver = "oracle.jdbc.driver.OracleDriver";

Class.forName(dbDriver).newInstance();

Connection connection = DriverManager.getConnection(connectionURL, "PLANT", "PLANT");

JasperDesign design = JRXmlLoader.load("C:\\Projects\\WebApplication8\\web\\uploads\\TutorialSub_1.jrxml");

JasperReport jasperReport = JasperCompileManager.compileReport(design);

JasperPrint print = JasperFillManager.fillReport(jasperReport, null, connection);

JasperViewer.viewReport(print);

JasperExportManager.exportReportToPdfFile(print, "C:\\Projects\\WebApplication8\\web\\uploads\\TutorialSub_1.pdf");

return "queries";
}

最佳答案

禁用以下行:

JasperViewer.viewReport(print);

如:

//JasperViewer.viewReport(print);

我相信JasperViewer是在本地显示打印报告的预览器。如果它在服务器上运行,那么 JasperViewer 将尝试访问服务器的视频显示以显示报告。服务器可能会在此时抛出异常。

要查找问题,请执行以下操作:

public String reportGenerateNew() {
try {
// Trap and print any errors or exceptions from the existing code.
reportGenerate();
}
catch( Exception e ) {
e.printStackTrace();
}
}

找到调用reportGenerate的代码并使其调用reportGenerateNew。或者使用 try...catch 将代码包装在 reportGenerate 方法中。抛出的异常将帮助您确定问题的根源。

此外,如果您尝试将 PDF 文件写入 Web 浏览器,则必须使用 HTTP 响应流调用相应的 JasperReports API 方法(它是静态的)。

关于java - Jasper Report 生成 PDF,然后 Glassfish 崩溃/关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com