Reason for this short article
When running a Dashboard with multiple reports it is not obvious how the reports on this Dashboard are executed. The fact that report queries are printed in the the output log one after another may add to the confusion and lead to an assumption that reports are executed one after another, one report at a time. This has been a concern for some of our users. The purpose of this post is to shed some light on how Dashboard reports run
Explanation
Dashboards in JasperReports Server (JRS) version 6.3 make use of Visualize.js API. If you are using browser tools (common shortcut to open is the F12 key) you can watch the http requests being made by the browser. Visualize.js largely makes use of the REST API, so you should see request for REST 'reportexecutions' service.
So the server receives these RESTful http requests in order that the browser sends them, and it queues them up just like every other inbound http request it receives.
The JRS webapp is servlet-based, so the application server (tomcat, jboss, websphere) has some threads which process each inbound request and responds when finished (http response flushed back from JRS layers through application server layers through any webserver or proxy to browser).
If you ran 6 reports via the web UI in rapid succession the same thing would occur if you ran your 6-dashlet dashboard - appserver worker threads would do session and app-level work, call JR library code, grab DB connections from the DB connection pool, start filling and exporting to respond back. If, for example, you had a single-threaded appserver and just a single connection in the connection pool, then DB queries would be executed in serial. But in practice this isn't the case, you probably have bunches of appserver threads and a minimum of 20 db connections in the pool, which means the report execution requests are generally managed by the app server in parallel.
----------------------------
Ref. case #01450315
Recommended Comments
There are no comments to display.