2013-11-27 155 views
1

我寫了一個簡單的應用程序來從我的服務器上獲取命令。我決定能夠運行一些報告並在JasperViewer中顯示它們,然後從那裏決定是否打印或導出/保存爲其他格式。它工作正常,當我運行在的NetBeans項目,但一旦我編譯它,並將其發佈到我的服務器,運行報告,但我不能讓報告在JasperViewer打開。實際上,觀衆根本不會啓動。Java Web Start應用程序中的JasperReports

這裏是我的代碼:

try { 
    Connection con = DriverManager.getConnection(
      "jdbc:mysql://MYDATABASE", 
      "MY_UN", 
      "MY_PW"); 

    java.sql.Statement stmt = con.createStatement(); 

    ResultSet rs = stmt.executeQuery("SELECT `Product_ID` AS PRODUCT_ID, `Name` AS PRODUCT_DESCRIPTION, `Qty` AS QTY, `Price` AS PRICE_EACH_LINE, `Line_Total` AS LINE_TOTAL_LINE FROM `orderlines`;"); 

    JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs); 

    final Map<String, Object> parameter = new HashMap<String, Object>(); 
    parameter.put("DEALER_NAME", "TY JACOBS"); 
    parameter.put("DEALER_STREET", "MY_ADDRESS"); 
    parameter.put("DEALER_CITY_STATE_ZIP", "MY_CITY_STATE_ZIP"); 
    parameter.put("DEALER_PHONE", "MY_PHONE_NUMBER"); 

    ClassLoader classloader = getClass().getClassLoader(); 
    InputStream url = null; 
    url = classloader.getResourceAsStream("OK/report3.jrxml"); 
    JasperReport jasperReport = JasperCompileManager.compileReport(url); 

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, resultSetDataSource); 

    JasperViewer.viewReport(jasperPrint, false); 

} catch (SQLException|JRException ex) { 
    Logger.getLogger(DbReportDSFill.class.getName()).log(Level.SEVERE, null, ex); 
} 

還有一兩件事,我可以在本地也沒有問題運行它。它似乎只是我發佈到服務器,我無法在JasperViewer得到報告。

回答

0

我想,我們有類似的情況。使用JasperViewer.viewReport(jasperPrint,false);時,它將顯示在部署它的相同服務器上。所以當你在本地執行時,它可以在本地部署時正常工作。您可以驗證試圖從其他系統打你的本地URL,你會看到jasperviewer會在你的系統中打開,而不是從那裏被調用。

以下是我們所做的:
轉換爲字節數組並將其傳遞到前端進行顯示。

byte[] byteArray = JasperExportManager.exportReportToPdf(jasperPrint); 

然後httpServletResponse.getOutputStream().write(byteArray);

希望這有助於!

相關問題