Before you can build Docker images to deploy the modules, you must configure them to add the license file and specify a repository to store your reports. Optionally, you can also enable logging and set concurrent thread limits.
Installing the License File
You must purchase a license from TIBCO Jaspersoft to run JasperReports IO At-Scale. Once you recieve the license file, save a copy in the following folder:
jrio-manager-docker/jrio/classes
For more information about the license file, contact your TIBCO Jaspersoft support representative.
Using the Standalone Repository
The jrio-client module contains a repository that you can access through the sample application. The jrio-reporting modules can access reports in this standalone repository without needing to access an instance of JasperReports Server. To allow for quick demonstrations, the standalone repository is the default configuration of JasperReports IO At-Scale.
However, the sample application is not a high-performance repository and is deployed statically in the jrio-client pod. Jaspersoft recommends using a JasperReports Server repository, as described in the next section.
To make your reports appear in the standalone repository of the sample application, add the files to the jrio-client module in the following folder:
jrio-client-docker/jrio-repository/samples
The standalone repository is identical to the file-based repository in JasperReports IO Professional. For more information about its file structure, see the section "JasperReports IO Repository" in Chapter 2 of the JasperReports IO Professional User Guide.
Connecting to a JasperReports Server Repository
In a production environment, Jaspersoft recommends using JasperReports IO At-Scale with a JasperReports Server instance for maximum throughput and flexibility. In this case, users create and access reports in the JasperReports Server repository, and JRIO At-Scale becomes the scalable, high-performance reporting engine for the server.
When connecting to JasperReports Server, you must specify a URL (IP address or hostname) that is accessible from inside the JasperReports IO At-Scale cluster. If you plan to use JasperReports Server on AWS, you can specify the static IP or loadbalancer with hostname that is attached to that server instance. Be aware that you should create your Virtual Private Cloud (VPC) ahead of time, as well as your JasperReports Server instance so that the IP address is already availabe for the next steps. For more information, see Deploying JasperReports Server.
The repository URL is usually set in the Helm chart (values.yaml), as described in Configuring the Helm Chart. The Helm chart lets you update the repository URL dynamically because its value takes precedence. However, setting this value in the module configuration as described below provides a hardcoded default value. |
Optional:
1. | Specify the server's URL in three module configuration files: |
Files | jrio-reporting-docker/jrio/applicationContext-jrs.xml jrio-export-docker/jrio/applicationContext-jrs.xml jrio-rest-docker/jrio/WEB-INF/applicationContext-jrs.xml |
Bean | id="serverConfiguration" class="com.jaspersoft.jrio.common.repository.jrs.ServerConfiguration" |
Property | serverURL |
Example | <property name="serverURL" value="http://example.com:8080/jasperserver-pro"/> |
2. | By default, JasperReports IO At-Scale still includes the standalone repository in the jrio-client module. Very high througput in JRIO At-Scale can lead to a performance bottle-neck in the repository of the jrio-client module, therefore Jaspersoft recommends disabling it before deployment. |
To keep the other modules from accessing the repository in the jrio-client module, open each of the following files and comment out all of the listed beans:
Files | jrio-reporting-docker/jrio/applicationContext-repository.xml jrio-export-docker/jrio/applicationContext-repository.xml jrio-rest-docker/jrio/WEB-INF/applicationContext-repository.xml |
Beans | com.jaspersoft.jrio.common.repository.HttpRepositoryService com.jaspersoft.jrio.common.repository.HttpRepositoryPersistenceServiceFactory com.jaspersoft.jrio.common.repository.JRIOHttpRepositoryPersistenceServiceFactory |
Alternatively, if you wish to access the JRIO At-Scale cluster directly without going through JasperReports Server, you can store resources in static files directly in the modules. For more information, see Using a Local Repository.
Setting JasperReports Properties
JasperReports properties are the configuration settings for the JasperReports Library that is the reporting engine for JasperReports IO At-Scale. They affect the reporting and exporting modules to determine many aspects of report generation and output.
JasperReports properties are usually set in the Helm chart (values.yaml), as described in Configuring the Helm Chart. The Helm chart lets you update the properties dynamically because its values takes precedence. However, setting this value in the module configuration as described below provides a hardcoded default value. |
Optional:
To set JasperReports properties, add them to the following files:
jrio-reporting module | jrio-reporting-docker/jrio/classes/jasperreports.properties jrio-reporting-docker/jrio/classes/jasperreports_extension.properties |
jrio-export module | jrio-export-docker/jrio/classes/jasperreports.properties jrio-export-docker/jrio/classes/jasperreports_extension.properties |
Configuring Logging
By default, logging is enabled in the jrio-manager and jrio-reporting modules. Jaspersoft does not recommend changing the logging levels because the logs are used for troubleshooting. You can monitor these logs and use the Kubernetes Logging API to track events inside the cluster.
The logging levels are defined as follows:
Module | jrio-manager |
File | jrio-manager-docker/jrio/classes/log4j2.xml |
Loggers | <Logger name="com.jaspersoft.jrio.manager.redis.RedisLicensePublisher" level="INFO"/> <Logger name="com.jaspersoft.jrio.manager.reporting.ReportingQueueManager" level="DEBUG"/> |
Module | jrio-reporting |
File | jrio-reporting-docker/jrio/classes/log4j2.xml |
Logger | <Logger name="com.jaspersoft.jrio.reporting.execution.ReportExecutionPoll" level="DEBUG"/> |
Module | jrio-rest |
File | jrio-rest-dockerjrioWEB-INFclasseslog4j2.xml |
Logger | None by default |
Setting Concurrent Threads
The jrio-reporting and jrio-export modules are the workhorses of a JasperReports IO At-Scale cluster, usually deployed as multiple pods (module instances) to one or more nodes (physical or virtual machines). Each pod can also specify how many threads to run concurrently. This value depends on your performance needs, and it requires fine tuning based on service level requirements, user expectations, peak load, and CPUs available on each node.
The concurrent threads are usually set in the Helm chart (values.yaml), as described in Configuring the Helm Chart. The Helm chart lets you update the properties dynamically because its values takes precedence. However, setting threads in the module configuration as described below provides a hardcoded default value. |
To specify the default number of concurrent threads in each reporting pod:
File | jrio-reporting-docker/jrio/applicationContext-reporting.xml |
Bean | reportExecutionPoll |
Property | reportExecutionThreads |
To specify the default number of concurrent threads in each export module:
File | jrio-export-docker/jrio/applicationContext-export.xml |
Bean | com.jaspersoft.jrio.export.executor.ReportExportExecutor |
Property | exportThreads |
Recommended Comments
There are no comments to display.