In application server systems, such as J2EE, replication is an essential strategy for reliability and efficiency. Many J2EE implementations, both commercial and open-source, provide some replication support. However, the range of possible strategies is wide, and the choice of the best one, depending on the expected application profile, remains an open research question.
To support research in this area, we introduce a framework for prototyping J2EE replication algorithms. In effect, it divides replication code into two layers: the framework itself, which is common to all replication algorithms, and a specific replication algorithm, which is ''plugged in'' to the framework.
The framework simplifies development in two ways. First, it keeps much of the complexity of modifying a J2EE implementation within the framework layer, which is implemented only once. Second, through the API, the replication algorithm sees a highly abstracted view of the components in the server. This frees the designer to concentrate on the important issues that are specific to a replication algorithm, such as communication.
Our key contribution is an API, which clearly separates the concerns of the server and the replication algorithm. The server acts like an ordinary, non-replicated J2EE server, except that at key points in processing, it delegates control to the replication algorithm. The replication algorithm sees a highly abstracted view of the components in the server. Cluster management and inter-server communication are the responsibility of the replication algorithm, not the server.
We have implemented this framework, by modifying a version of the open-source J2EE server JBoss. Compared to an unmodified server, the framework adds a performance cost of about 22%. Thus, it is quite practical for the initial development and evaluation of replication algorithms. Several replication algorithms have already been implemented in this environment.