簡體   English   中英

Jasper報告生成PDF,然后Glassfish崩潰/關閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM