JReport can also run as a cluster using either a cluster of remote JReport standalone instances or as a cluster of JReport WAR files running inside a group of independent application server instances or as an application server cluster such as JBoss's cluster technology. When JReport is in a clustered environment, there is a built in dispatcher that has several available algorithms to distribute the runtime load. A Java interface is defined that allows application developers to write their own load distribution algorithm and register that with the JReport Cluster service.
The following diagram shows one potential configuration where JReport and the application are running in web containers. The JReport instances can be clustered so no matter where a resource is published it is visible on both systems and even if one system goes down for maintenance, the other system can handle the requests and new instances can be quickly started to handle larger loads. The client machines can go to either server so the user does not need to be aware of which JReport Server is handling the request.
For more information, see JReport Server Cluster in the JReport Server User's Guide.
JReport provides several built in algorithms for load balancing and assigning tasks to servers. In most cases, one of the built in methods described in load balancing mechanism is adequate; however, JReport provides an interface called LoadBalancer that allows you to customize assigning tasks to specific server instances. For example, you may want to assign tasks to specific servers based on the user id yet still go to other servers if the specified server is overloaded or down.
You can view the Javadoc at jet.server.api.cluster.LoadBalancer and jet.server.api.rmi.RemoteDispatcher. See the examples in <install_root>\help\samples\APICluster
.