MyEclipse: .rptdesign does not exist or contains errors.

ess_stegra - Jul 01, 2011 - 10:35 PM
Post subject: .rptdesign does not exist or contains errors.
I am trying to get a simple report working in my appication, It works fine in MyEclipse's Report Perspective. Here is the error at run time:
Code:

- The report file : C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\TEC/reports\hosrPicksreport.rptdesign does not exist or contains errors.

org.eclipse.birt.report.exception.ViewerException: The report file : C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\TEC/reports\hosrPicksreport.rptdesign does not exist or contains errors.

   at org.eclipse.birt.report.context.ViewerAttributeBean.getDesignHandle(ViewerAttributeBean.java:659)

   at org.eclipse.birt.report.context.ViewerAttributeBean.__init(ViewerAttributeBean.java:231)

   at org.eclipse.birt.report.context.BaseAttributeBean.init(BaseAttributeBean.java:233)

   at org.eclipse.birt.report.context.ViewerAttributeBean.<init>(ViewerAttributeBean.java:116)

   at org.eclipse.birt.report.context.BirtContext.__init(BirtContext.java:44)

   at org.eclipse.birt.report.context.BaseContext.<init>(BaseContext.java:69)

   at org.eclipse.birt.report.context.BirtContext.<init>(BirtContext.java:30)

   at org.eclipse.birt.report.servlet.ViewerServlet.__getContext(ViewerServlet.java:150)

   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:243)

   at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)

   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)

   at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)

   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)

   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)

   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)

   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)

   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)

   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)

   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)

   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)

   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)

   at java.lang.Thread.run(Thread.java:619)

Here is my installation summary:
Code:

*** Date:
Friday, July 1, 2011 3:21:48 PM MDT

** System properties:
OS=Windows2003
OS version=5.2.0
Java version=1.6.0_12


*** MyEclipse details:
MyEclipse Enterprise Workbench
Version: 8.5
Build id: 8.5-20100319


*** Eclipse details:
MyEclipse Enterprise Workbench

Version: 8.5
Build id: 8.5-20100319






Eclipse startup command=-os
win32
-ws
win32
-arch
x86
-showsplash
-launcher
C:\Program Files\Genuitec\MyEclipse 8.5\myeclipse.exe
-name
Myeclipse
--launcher.library
C:\Program Files\Genuitec\MyEclipse 8.5\../Common/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519\eclipse_1206.dll
-startup
C:\Program Files\Genuitec\MyEclipse 8.5\../Common/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-install
C:/Program Files/Genuitec/MyEclipse 8.5
-configuration
configuration
-vm
C:/Program Files/Genuitec/Common/binary/com.sun.java.jre.win32.x86_1.6.0.012/bin/client/jvm.dll


This probably has to do with database connectivity. My application uses JNDI and I am unsure how to configure JNDI for my BIRT Reports.
How do I configure my reports to use JNDI?
What other steps can I take to trouble shoot?

Thanks!
ess_stegra - Jul 04, 2011 - 03:51 AM
Post subject:
Well I got it working, but it was very painful. Here is what I learned (Genuitec employees and others feel free to jump in.):
The steps below assume you have created a blank report and that you have not yet placed any tables on the blank report.

To start displaying data from a database:
1. Create a data source.
The first step in creating a data source is to select a driver. This is confusing terminology because you are really selecting a database CONNECTION either creating one from scratch or selecting one you created in the database explorer perspective. This has major implications when you are trying to get a report to use a JNDI connection. At this point you are not just associating a database driver with your data source, you are associating database connection parameters as well.

The next step is optional. Once you have selected the database connection driver, you can enter an optional JNDI url.

At this point you have created a data source.

2. Create a data set.
In the Data Explorer, right click on Data Sets and select "New Data Set" Select the Data Source you created in the previous step and click "Next" You are then prompted to enter a SQL Query. Enter your SQL query and click "Finish"

3. Add a table to your blank report.
From the palette, drag a table object onto your report.

4. Add columns to the table on your report.
Drag one or more columns from your data set onto the table you just added.

5. Preview your report.
Click on the preview tab at the bottom of your report. Data should display.

At this point MyEclipse has added the data source information to the report. Here is my data source from the .rptdesign file:
Code:

    <data-sources>
        <oda-data-source extensionID="com.genuitec.eclipse.reporting.oda" name="Data Source" id="7">
            <property name="meDriver">MSSqlServer</property>
            <property name="odaDriverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <property name="odaURL">jdbc:sqlserver://essentialsbs:1433;databaseName=tec</property>
            <property name="odaUser">tec</property>
            <encrypted-property name="odaPassword" encryptionID="base64">dGVj</encrypted-property>
            <property name="odaJndiName">java:comp/env/jdbc/DefaultDS</property>
        </oda-data-source>
    </data-sources>


It is critical to understand that MyEclipse Reports ignores this information while the report is being designed. The only connection info MyEclipse uses to preview the report is the database connection you created back in Step 1. To see what I mean, play around with your data source in the .rptdesign file. The following still works on the Preview Tab:
Code:

    <data-sources>
        <oda-data-source extensionID="com.genuitec.eclipse.reporting.oda" name="DefaultDS" id="27">
            <property name="meDriver">MSSqlServer</property>
        </oda-data-source>
    </data-sources>

Deploying this, however, gives the following error:

Code:

org.eclipse.birt.report.engine.api.EngineException: An exception occurred during processing. Please see the following message for details: Cannot open the connection for the driver: com.genuitec.eclipse.reporting.oda. Missing properties in Connection.open(Properties).

In summary, while developing the report, MyEclipse needs a working database connection driver enty. For example:
<property name="meDriver">MSSqlServer</property>

To deploy using JNDI, you also need a JNDI entry:
<property name="odaJndiName">java:comp/env/jdbc/DefaultDS</property>

Don't be fooled into thinking that being able to preview the report in design mode translates into a correct configuration at run time.
All times are GMT - 6 Hours
Powered by PNphpBB2 © 2003-2004 The PNphpBB Group
Credits