[英]Jasper Report Generates a PDF and then Glassfish crashes/shutsdown
我正在運行一個用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方法(它是靜態的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.