BIRT, Script Data Set, Java
От: sef  
Дата: 18.01.08 10:08
Оценка:
Здравствуйте,

уже не знаю, что мне предпринять для предотвращения ошибки, возникающей в моем отчете. Но сначало немного расскажу о своих "метаниях":

В данный момент провожу тесты на пригодность BIRT в наших проектах. Задача состоит в том, чтобы в отчетах
показывать картинки из самописного хранилища данных (назовем его ImageServer, написанный на Java и отдающий контент по определенному порту).
BIRT был выбран, поскольку отчеты в нем создаются достаточно просто, 100% java, бесплатно.

Для решения поставленной задачи в среде BIRT, можно использовать несколько подходов. Например:
1. перегонять картинки из собственного хранилища (ImageServer) в DB Oracle и далее использовать jdbc DataSet на стороне BIRT.
+: jdbc, который легко реализуется в BIRT.
-: еще один сервер, дополнительный шаг в реализации, двойное хранение контента. Да и лишняя нагрузка на Oracle-сервер, который и так не скучает
2. написать на для Oracle Java-function, a на базе нее Pipeline Function при запросе к которой (типа select * from table(my_function(param1,param2))
будет производится автоматический вызов ImageServer.
принципиально этот подход не отличается от предыдущего, разве что автоматизируем процесс "трансфера" картинок на участке ImageServer-Oracle. В любом случае, хотелось бы отказаться от "моста" ImageServer-jdbc, поскольку картинок может быть обработано несколько сот тысяч за час.
3. Использовать Java ScriptDataSet в среде BIRT.
+ работаем напрямую с ImageServer.

Прошу прощения, что так подробно распинаюсь, тема для меня новая и неизученая, боюсь что-то упустить.
Так вот. Если с подходами 1 и 2 проблем особых нет, то при реализации 3-го подхода и происходит ошибка, над которой бьюсь уже несколько дней. Последняя надежда на форум. Собирался уже плюнуть и посмотреть CristalReport, но там тоже есть свои подводные камни для отдельной темы .

Итак, по-порядку о BIRT — Script Data Set — Java.class


public class SimpleClass {
    private final String path = "D:/projects/workspace_sef_test/test_report_java/scanner/";
    private final byte[] buffer = new byte[1024];
    private Vector<Object[]> rtnV = null;

    /**
     * This function simulates a read from an EJB/DB
     * @return vector 
     */
    public Vector<Object[]> readData(){
        if (rtnV==null) {
            rtnV = new Vector<Object[]>();
            String[] array = new String[] {
                    "00016116.jpg","00016117.jpg","00016118.jpg","00016119.jpg","00016120.jpg",
                    "00016121.jpg","00016122.jpg","00016123.jpg","00016124.jpg","00016125.jpg"
            };
            try {
                for (int i = 0; i < array.length; i++) {
                    rtnV.add(new Object[]{i,array[i], getByteArray(array[i])});
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return rtnV;
    }
    private byte[] getByteArray(String fileName) throws IOException{
        byte[] b = null;
        File f = null;
        FileInputStream fis = null;
        ByteArrayOutputStream byteArrayOutputStream = null;
        try {
            f = new File(path+fileName);
            fis = new FileInputStream(f);
            byteArrayOutputStream = new ByteArrayOutputStream();
            int length = -1;
            while((length = fis.read(buffer)) != -1) {
                byteArrayOutputStream.write(buffer, 0, length);
            }
            b = byteArrayOutputStream.toByteArray();
            byteArrayOutputStream.close();
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            f = null;
            fis = null;
            byteArrayOutputStream = null;
        }
        return b;
    }

    public static void main(String[] args) {
        SimpleClass sc = new SimpleClass();
        Vector<Object[]> rtn = sc.readData();
        System.out.println(rtn.size());
        for( int i=0; i<rtn.size(); i++ ){
            Object[] sa = rtn.get(i);
            System.out.println(sa[0] + "--" + sa[1] + "--" + sa[2] );
        }
    }
}


Раздел Script моего *.rptdesign для Script Data Set:

====="open"
favoritesClass = new Packages.de.narz.birt.events.SimpleClass();
favorites = favoritesClass.readData();
iter = favorites.iterator();]]>

===="fetch"
if (!iter.hasNext()){
    return false;
}
favrow = iter.next();
row["id"]=favrow[0];
row["name"]=favrow[2].length;
row["img"]=favrow[2];
return true;]]

====="close"
favoritesClass = null;
favorites = null;
iter = null;




копирую скомпилированный SimpleClass.class куда положено и в Preview вижу результат только для первой строки, затем выдается ошибка, указанная ниже. Если же я заменю
row["img"]=favrow[2];

на
row["img"]="";

то ошибки никакой нет. Явно проблема какая-то при работе с byte[]. Он не пустой — на это указывает 2-й столбец моего отчета, да и обычный вызов java-класса подтверждает это. Пытался цеплять картинки разных размеров, не помогло. В интернете есть несколько ссылок на описание подобных Exception, но все они сводятся к тому, что производится неправильное возвращение true/false при итерации в методе "fetch". Думаю, это не мой случай, поскольку, как уже указывал, отчет "в принципе" без byte[] рабочий.
Что можно еще предринять? Ошибка следущая:

following items have errors: 


ReportDesign (id = 1): 
- There are errors evaluating script "if (!iter.hasNext()){
 return false;
}
favrow = iter.next();
row["id"]=favrow[0];
row["name"]=favrow[2].length;
row["img"]=favrow[2];
return true;":{1}. 
Error.ScriptEvaluationError ( 2 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "if (!iter.hasNext()){
 return false;
}
favrow = iter.next();
row["id"]=favrow[0];
row["name"]=favrow[2].length;
row["img"]=favrow[2];
return true;":{1}.
 at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:77) 
 at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.handleJS(DataSetScriptExecutor.java:159) 
 at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:100) 
 at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.fetch(ScriptDataSetRuntime.java:102) 
 at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor$CustomDataSet.fetch(PreparedScriptDSQuery.java:257) 
 at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:150) 
 at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:91) 
 at org.eclipse.birt.data.engine.executor.cache.ExpandableRowResultSet.next(ExpandableRowResultSet.java:62) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.populateData(SmartCacheHelper.java:288) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.initInstance(SmartCacheHelper.java:261) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.getResultSetCache(SmartCacheHelper.java:224) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCache.<init>(SmartCache.java:68) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.populateOdiResultSet(PassUtil.java:108) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.pass(PassUtil.java:61) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.doSinglePass(PassManager.java:185) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.pass(PassManager.java:90) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.populateResultSet(PassManager.java:72) 
 at org.eclipse.birt.data.engine.executor.transform.ResultSetPopulator.populateResultSet(ResultSetPopulator.java:208) 
 at org.eclipse.birt.data.engine.executor.transform.CachedResultSet.<init>(CachedResultSet.java:132) 
 at org.eclipse.birt.data.engine.executor.CandidateQuery.execute(CandidateQuery.java:106) 
 at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor.executeOdiQuery(PreparedScriptDSQuery.java:223) 
 at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:767) 
 at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:217)
 at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:157) 
 at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:83) 
 at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:157) 
 at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:117) 
 at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:182) 
 at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1683) 
 at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:76) 
 at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:61) 
 at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:42) 
 at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:45) 
 at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:33) 
 at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:63) 
 at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:85) 
 at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:106) 
 at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:140) 
 at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:68) 
 at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.BirtViewerReportService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.actionhandler.BirtGetPageAllActionHandler.__execute(Unknown Source) 
 at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPageAll(Unknown Source) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(Unknown Source) 
 at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(Unknown Source) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) 
 at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) 
 at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 
 at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
 at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
 at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
 at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) 
 at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 
 at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
 at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(Unknown Source) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) 
 at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
 at org.eclipse.birt.report.filter.ViewerFilter.doFilter(Unknown Source) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422) 
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.eclipse.tomcat.internal.EclipseErrorReportValve.invoke(EclipseErrorReportValve.java:153) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199) 
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828) 
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700) 
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584) 
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
 at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException 
 at org.eclipse.birt.data.engine.executor.ResultClass.wasAnyType(ResultClass.java:462) 
 at org.eclipse.birt.data.engine.script.DataRow.setColumnValue(DataRow.java:152) 
 at org.eclipse.birt.data.engine.script.JSRowObject.put(JSRowObject.java:297) 
 at org.mozilla.javascript.ScriptableObject.putProperty(ScriptableObject.java:1347) 
 at org.mozilla.javascript.ScriptRuntime.setObjectElem(ScriptRuntime.java:1404) 
 at org.mozilla.javascript.ScriptRuntime.setObjectElem(ScriptRuntime.java:1387) 
 at org.mozilla.javascript.gen.c26._c1(DataSet[ScriptedDataSet].__bm_FETCH:8) 
 at org.mozilla.javascript.gen.c26.call(DataSet[ScriptedDataSet].__bm_FETCH) 
 at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:105) 
 at org.mozilla.javascript.gen.c14._c0(DataSet[ScriptedDataSet].__bm_FETCH:1) 
 at org.mozilla.javascript.gen.c14.call(DataSet[ScriptedDataSet].__bm_FETCH) 
 at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:304) 
 at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2769) 
 at org.mozilla.javascript.gen.c14.call(DataSet[ScriptedDataSet].__bm_FETCH) 
 at org.mozilla.javascript.gen.c14.exec(DataSet[ScriptedDataSet].__bm_FETCH)
 at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:95) 
 at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateScript(JavascriptEvalUtil.java:134) 
 at org.eclipse.birt.data.engine.script.ScriptEvalUtil.evaluateJSAsExpr(ScriptEvalUtil.java:676) 
 at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:79) 
 at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:71) 
 ... 103 more


- Unhandled exception when executing script 

Error.UnhandledScriptError ( 2 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: Unhandled exception when executing script 
 at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:178) 
 at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:168) 
 at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:119) 
 at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.fetch(ScriptDataSetRuntime.java:102) 
 at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor$CustomDataSet.fetch(PreparedScriptDSQuery.java:257) 
 at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:150) 
 at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:91) 
 at org.eclipse.birt.data.engine.executor.cache.ExpandableRowResultSet.next(ExpandableRowResultSet.java:62) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.populateData(SmartCacheHelper.java:288) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.initInstance(SmartCacheHelper.java:261) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCacheHelper.getResultSetCache(SmartCacheHelper.java:224) 
 at org.eclipse.birt.data.engine.executor.cache.SmartCache.<init>(SmartCache.java:68) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.populateOdiResultSet(PassUtil.java:108) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassUtil.pass(PassUtil.java:61) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.doSinglePass(PassManager.java:185) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.pass(PassManager.java:90) 
 at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.populateResultSet(PassManager.java:72) 
 at org.eclipse.birt.data.engine.executor.transform.ResultSetPopulator.populateResultSet(ResultSetPopulator.java:208)
 at org.eclipse.birt.data.engine.executor.transform.CachedResultSet.<init>(CachedResultSet.java:132) 
 at  org.eclipse.birt.data.engine.executor.CandidateQuery.execute(CandidateQuery.java:106) 
 at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor.executeOdiQuery(PreparedScriptDSQuery.java:223) 
 at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:767) 
 at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:217) 
 at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:157) 
 at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:83) 
 at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:157) 
 at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:117) 
 at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:182) 
 at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1683) 
 at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:76) 
 at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:61) 
 at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:42) 
 at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:45) 
 at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:33) 
 at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:63) 
 at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:85) 
 at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:106) 
 at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:140) 
 at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:68) 
 at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.BirtViewerReportService.runAndRenderReport(Unknown Source) 
 at org.eclipse.birt.report.service.actionhandler.BirtGetPageAllActionHandler.__execute(Unknown Source) 
 at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(Unknown Source)
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(Unknown Source)
 at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPageAll(Unknown Source) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(Unknown Source) 
 at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(Unknown Source) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) 
 at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) 
 at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 
 at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
 at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
 at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
 at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) 
 at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 
 at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
 at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(Unknown Source) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) 
 at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
 at org.eclipse.birt.report.filter.ViewerFilter.doFilter(Unknown Source) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422) 
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.eclipse.tomcat.internal.EclipseErrorReportValve.invoke(EclipseErrorReportValve.java:153) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
 at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199) 
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828) 
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700) 
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584) 
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
 at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.birt.data.engine.core.DataException: data.engine.BadFetchScriptReturnType 
 at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:109)
 ... 101 more
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.