Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [birt-dev] dynamic classloading mechanism in BIRT engine

Paul,

Thanks and sorry for that, I have already did it.

Csaba

2012. február 13. 19:21 Paul Clenahan írta, <pclenahan@xxxxxxxxxxx>:

Csaba,

 

You should post your question over on the BIRT Forums at BIRT Exchange: http://www.birt-exchange.org/org/forum/. This mailing list is for the project developers.

 

(Note that for BIRT 3.7.2, we are including both a POJO and OSGi based BIRT Runtime, which may help here. See development plan at http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/birt/project/plan/birt_project_plan_3_7_2.xml ).

 

Paul.

 

From: birt-dev-bounces@xxxxxxxxxxx [mailto:birt-dev-bounces@xxxxxxxxxxx] On Behalf Of Csaba Szucs
Sent: Sunday, February 12, 2012 10:56 AM
To: birt-dev@xxxxxxxxxxx
Subject: [birt-dev] dynamic classloading mechanism in BIRT engine

 

Hello BIRT Developers,

We have a project with the following reporting requirements:
a) reporting capability
b) high reporting availability: restart of reporting system is unacceptable
c) reporting dynamicity: some facility for hot report deployments/extensions without any restart of reporting system
d) facility for fetching data/metadata from our CMS system (Version Control and Wokflow Management system) as data source for reports

A new report will be packaged and (hot-)deployed as a plugin including all of the resources required for its generation:
a) report resource files such as report design file (.rptdesign)
b) BIRT Java event handlers

So we decided to use BIRT within an OSGi/Equinox application.

Unfortunately BIRT report engine cannot see Java event handler classes from newly deployed report plugins. So I need some kind of dynamic classloading mechanism in BIRT.

I am thinking about how I could realize that...I list some of possible alternative solution drafts below.

Question 1)
What is your opinion about them as BIRT developers/experts?

Question 2)
There was a possibility to configure classloader per report generation task (through app context), why doesn't it work any more in latest BIRT version? Maybe that's just what I would need...

Many thanks, Csaba


1) With no usage of BIRT _javascript_ing during report generation phase
 a) custom CMS-specific BIRT web service data source?
 b) custom CMS-specific BIRT data source and data set items?
 c) report data could be fetched and preprocessed by Java classes executed just before report generation phase and could be passed to BIRT report engine
   c1) through temporary data files (plain file, CVS file, XML file)
   c2) through InputStream objects passed to BIRT datasource or dataset items? Is that possible, will it work? As if I had seen such source example...

2) With usage of BIRT _javascript_ing during report generation phase
 a) classpath to BIRT Java event handlers is set at report engine startup time (not ok, it's not dynamic)
 b) JAR file(s) of BIRT Java event handlers are set on Resources tab in report design files (a bit better)
 c) custom flexible/dynamic classloading solution in BIRT?
   c1) any classloader hook api in BIRT for doing this?
    For example: hooking custom classloader into BIRT with some parent delegation to the given report's BundleClassloader (please note: Java event handlers may import other Java classes from other plugins)?
   c2) some OSGi/Equinox classloading workaround in order BIRT report engine plugin could see Java event handlers from report plugins
     -dynamic imports (in reference to the packages of BIRT Java event handlers)?
     -fragments (reports could be fragments to the host plugin of BIRT report engine)?
     -resolver hook / bundle hook / weaving hook services (what about these OSGi hook facility)?
     -Equinox Framework Adaptor API (Class Loading Hook)?


_______________________________________________
birt-dev mailing list
birt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/birt-dev



Back to the top