Hi,<br />
<br />
I have written an ODA Driver that interfaces to our application. All is running fine with BIRT in Eclipse Indigo (3.7) SDK. Now I am at the stage where I want to run my report in the BIRT web viewer within Tomcat. As the ODA Driver was developed in Eclipse Indigo (3.7) I have downloaded the BIRT Runtime 3.7 from:<br />
<br />
<a class='bbc_url' href='
http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-R1-3_7_0-201106151818/birt-runtime-3_7_0.zip'>BIRT Download</a><br />
<br />
When unzipped I have the following folder structure:<br />
<br />
<span style='font-family: Courier New'><br />
\birt-runtime-3_7_0<br />
----about_files<br />
----ReportEngine<br />
----WebViewerExample<br />
logs<br />
report<br />
scriptlib<br />
webcontent<br />
WEB-INF<br />
lib<br />
tlds<br />
CancelTask.jsp<br />
index.jsp<br />
test.rptdesign<br />
test1.rptdesign<br />
<br />
</span><br />
<br />
I have copied the WebViewerExample folder to my Apache Tomcat installation folder which is:<br />
<br />
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps<br />
<br />
I have renamed WebViewerExample folder to birt-web-viewer - pretty much what is documented in <a class='bbc_url' href='
http://wiki.eclipse.org/BirtPOJO_Viewer_Tomcat_Deployment'>BirtPOJO_Viewer_Tomcat_Deployment</a>.<br />
<br />
I can run the test.rptdesign example that is included with the download that you run from the index.jsp page. So far so good.<br />
<br />
I have packaged my ODA Driver up as follows (following Integrating and Extending BIRT Second Edition book). This is the structure on the filesystem/hard disk:<br />
<br />
dist/org.eclipse.birt.report.data.oda.myoda<br />
<span style='font-family: Courier New'><br />
----lib<br />
---- - - contains all of the JAR files that my driver depends such as mssqlserver.jar<br />
----META-INF<br />
MANIFEST.MF<br />
----plugin.xml<br />
----myoda.jar</span><br />
<br />
<strong class='bbc'>Now I need to deploy/copy my ODA Drivers to birt-web-viewer. The question is where do I need to copy to?</strong><br />
<br />
In the previous installation of BIRT Viewer 2.6, there was a platform/plugins folder under WEB-INF. This is not there anymore in 3.7. This included things like:<br />
<br />
org.eclipse.birt.report.data.oda.jdbc_2.6.2.r262_v20110127<br />
org.eclipse.birt.report.data.oda.sampledb_2.6.2.r262_v20110127<br />
org.eclipse.birt.report.engine.fonts_2.6.2.r262_v20110127<br />
org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520<br />
com.ibm.icu_4.2.1.v20100412<br />
... and so on (there are 124 items) ...<br />
<br />
<strong class='bbc'>** UPDATE **</strong><br />
I have come across a migration guide for this which can be found <a class='bbc_url' href='
http://wiki.eclipse.org/Birt_3.7_Migration_Guide'>here</a>. It indicates that you copy your exported plugin to the WEB-INF/lib folder.<br />
<br />
I have tried this. I have copied org.eclipse.birt.report.data.oda.myoda_1.0.1 from my dist folder into the WEB-INF/lib folder.<br />
<br />
When I click a link I have edited to my report (I have edited the index.jsp to do this), it pops up with the report parameters window in the browser which is correct as I have 2 report parameters. I enter the report parameters and I get the progress dialog. The report completes with errors and partially displays - only the title. The table that is linked to my data set is not fully rendered - I only get the column headers.<br />
<br />
There is a whole bunch of red text in the report which is the Exception stack trace. The summary part is:<br />
<br />
The following items have errors: <br />
<br />
Table (id = 48): <br />
+ Can not load the report query: 48. Errors occurred when generating the report document for the report element with ID 48. (Element ID:48) <br />
<br />
This detailed exception is as follows:<br />
<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
Error.ReportQueryLoadingError2 ( 1 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: Can not load the report query: 48. Errors occurred when generating the report document for the report element with ID 48. (Element ID:48)
at org.eclipse.birt.report.engine.data.dte.DataPresentationEngine.doExecuteQuery(DataPresentationEngine.java:160)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:265)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1897)
at org.eclipse.birt.report.engine.internal.document.v4.ReportItemExecutor.executeQuery(ReportItemExecutor.java:412)
at org.eclipse.birt.report.engine.internal.document.v4.TableItemExecutor.doExecute(TableItemExecutor.java:72)
at org.eclipse.birt.report.engine.internal.document.v4.ReportItemExecutor.execute(ReportItemExecutor.java:294)
at org.eclipse.birt.report.engine.internal.document.v4.ContainerExecutor.prepareChildExecutor(ContainerExecutor.java:226)
at org.eclipse.birt.report.engine.internal.document.v4.ContainerExecutor.hasNextChild(ContainerExecutor.java:110)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86)
at org.eclipse.birt.report.engine.api.impl.RenderTask$ReportExecutorWrapper.hasNextChild(RenderTask.java:800)
</pre>
<br />
And in one of the log files that appears under birt-web-viewer/logs, I have the following information logged:<br />
<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
29-Jul-2011 14:13:45 org.eclipse.birt.data.engine.odaconsumer.Driver doGetDriverManifest
SEVERE: Cannot find or process the ODA data source extension configuration.
java.lang.IllegalArgumentException: Cannot find the ODA dataSource extension (org.eclipse.birt.report.data.oda.sentinel).
Check the workspace log file for any problems with loading the extension bundle and its dependencies.
at org.eclipse.datatools.connectivity.oda.util.manifest.ManifestExplorer.getExtensionManifest(ManifestExplorer.java:200)
at org.eclipse.birt.data.engine.odaconsumer.Driver.doGetDriverManifest(Driver.java:152)
at org.eclipse.birt.data.engine.odaconsumer.Driver.findDataSourceExtensionConfig(Driver.java:128)
at org.eclipse.birt.data.engine.odaconsumer.Driver.getDriverExtensionConfig(Driver.java:79)
at org.eclipse.birt.data.engine.odaconsumer.Driver.getExtensionConfig(Driver.java:61)
at org.eclipse.birt.data.engine.odaconsumer.Driver.createNewDriverHelper(Driver.java:99)
at org.eclipse.birt.data.engine.odaconsumer.DriverManager.getDriverHelper(DriverManager.java:115)
at org.eclipse.birt.data.engine.odaconsumer.DriverManager.getNewDriverHelper(DriverManager.java:101)
at org.eclipse.birt.data.engine.odaconsumer.ConnectionManager.openConnection(ConnectionManager.java:150)
at org.eclipse.birt.data.engine.executor.DataSource.newConnection(DataSource.java:224)
at org.eclipse.birt.data.engine.executor.DataSource.open(DataSource.java:212)
at org.eclipse.birt.data.engine.impl.DataSourceRuntime.openOdiDataSource(DataSourceRuntime.java:217)
at org.eclipse.birt.data.engine.impl.QueryExecutor.openDataSource(QueryExecutor.java:409)
at org.eclipse.birt.data.engine.impl.QueryExecutor.prepareExecution(QueryExecutor.java:319)
at org.eclipse.birt.data.engine.impl.PreparedQuery.doPrepare(PreparedQuery.java:455)
at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.produceQueryResults(PreparedDataSourceQuery.java:190)
at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.execute(PreparedDataSourceQuery.java:178)
at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery.execute(PreparedOdaDSQuery.java:145)
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.execute(DataRequestSessionImpl.java:616)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:152)
at org.eclipse.birt.report.engine.data.dte.DataGenerationEngine.doExecuteQuery(DataGenerationEngine.java:80)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:265)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1897)
at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.emitter.ReportItemEmitterExecutor.execute(ReportItemEmitterExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
at org.eclipse.birt.report.engine.presentation.ReportDocumentBuilder.build(ReportDocumentBuilder.java:249)
at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:260)
at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:85)
at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1317)
at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:158)
at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81)
at org.eclipse.birt.report.service.actionhandler.BirtChangeParameterActionHandler.runReport(BirtChangeParameterActionHandler.java:58)
at org.eclipse.birt.report.service.actionhandler.AbstractChangeParameterActionHandler.__execute(AbstractChangeParameterActionHandler.java:53)
at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
...
</pre>
<br />
Have I copied my ODA driver to the correct folder - i.e. WEB-INF/lib?<br />
<br />
I am assuming my manifest is correct as I have created the project as per the book instructions. The META-INF/MANIFEST.MF is different on the filesystem to what is in the myoda.jar file. The manifest from the jar file is as follows: <br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
</pre>
<br />
Whereas the one on the file system contains (summary of):<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MyODA Driver
Bundle-SymbolicName: org.eclipse.birt.report.data.oda.myoda; singleton:=true
Bundle-Version: 1.0.1
Bundle-ClassPath: lib/activation.jar,
lib/bsh-2.0b2.jar,
lib/comm.jar,
</pre>
<br />
<br />
<br />
Any thoughts?<br />
<br />
Thanks<br />
<br />
Andez