Hi y'all!

I've been unsuccessfuly trying to solve this problem in the past days and I
can't seem to find a solution for it; I was hoping someone in the list would
have some advice or tip.

Firstly a quick outline of the situation:

BackEnd: Java/Hibernate
AppServer: WebOrb (Java)
FrontEnd: Flex 2
Reporter: Jasper Reports / Jasper4Flex

The problem is this:

When from the flex frontend a request is made to Jasper to generate a report
through jasper4flex (i.e.: Flex->WebOrb->Java->Jasper) the Flex compiler
throws an exception when compiling the report to SWF. The caught exception
holds no additional description.

On the other hand, if I don't use the Flex frontend or WebOrb and directly
call the Java report generation method, it all works well and the SWF report
is generated correctly.

As an additional comment, when using the full app (Flex + WebOrb + Java +
Jasper) i DO get it to work, buy only if y request jasper to export to PDF
instead, not to SWF.

If anyone has any insight on how to make this work, I'd really appreciate
it.
Here's some code, although it is my understanding that the error is thrown
by the Flex compiler.

FLEX CODE:

report.mxml:

<mx:Button x="296" y="65" label="Cliente" click="reporter.getReporteSujetos
();"/>

ReportMan.as -- class ReportMan

  public function ReportMan (unLoader : SWFLoader) {
   remoteReporter = new RemoteObject ("GenericDestination");
   remoteReporter.source = "test.TestReportFlex";
   remoteReporter.addEventListener(FaultEvent.FAULT, RPCHANDLER_fault);
   remoteReporter.generarReporte.addEventListener(ResultEvent.RESULT,
RPCHANDLER_generatReporte);
   loader = unLoader;
  }
  public function getReporteSujetos () : void {
   remoteReporter.generarReporte("reporte_sujeto");
  }



  public function RPCHANDLER_generarReporte (resultado : ResultEvent) : void
  {

   loader.source = "reporte_sujeto";
  }


JAVA CODE:

package ar.com.aufiero.lascanhas.test;

import java.io.File;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.export.flex.JRSwfExporter;
import ar.com.aufiero.lascanhas.reports.test.ReportTestSujeto;

public class TestReportFlex {

 public static void generarReporte (String fileName) throws Exception
 {
  try
  {
   JasperDesign jasperDesign = JRXmlLoader.load
("C:\\Reporte\\"+fileName+".jrxml");
   JasperReport report = JasperCompileManager.compileReport(jasperDesign);
   JasperPrint jasperPrint = JasperFillManager.fillReport(report,new
HashMap(), new JRBeanCollectionDataSource(
ReportTestSujeto.createBeanCollection()));
   JRSwfExporter exporter = new JRSwfExporter();
   exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
   exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, new
File("C:\\weborb\\webapp\\lascanhas\\", jasperPrint.getName() +
".swf").getAbsolutePath());
   exporter.exportReport();
  }
  catch(Exception e)
  {
    //I know this is horrible, just testing.
   throw e;
  }
 }

 /*
 public static void main(String[] args)
 {
  try {
   TestReportFlex.generarReporte("reporte_sujeto");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }*/
}

Thanks in advace!

Guido.

Reply via email to