OracleAS provides several features for ensuring application-level high availability, including session state replication and application state replication.


Session state replication

Session state replication is a high availability solution that is implemented in OracleAS using OC4J islands, where the OC4J processes replicate their session state with other processes in the island. This replication provides a backup in case of system failure. In most cases, multiple HTTP requests from the same client will need to access a J2EE application on an OracleAS instance. If the OC4J process for this application fails, the state of the client request may get lost. OracleAS prevents this loss of state by providing state-safe, stateful, and stateless applications.

Applications that are state-safe will always save their current states in a database. Although there is the advantage of avoiding the loss of state when the server fails, there is a performance tradeoff because the state will have to be continually saved to the database.

Stateful applications automatically replicate their states to other OC4J processes in an application server instance. They replicate their states to all islands in a specific cluster when the session updates.

Stateless applications, unlike stateful and state-safe applications, do not have states associated with them. So if the OC4J server handling a request fails, another server will handle the request.

With respect to OC4J and clustering, session state replication is managed in these ways:
•EJB clustering – the EJB entities are replicated over a cluster, or EJB sessions are distributed over a cluster, in order to manage EJB state
•RMI clustering – where the Application Context is replicated over a cluster to manage the application state
•HTTP state replication – the HTTP sessions are replicated over a cluster to manage the state

Application state replication
The OC4J processes in a cluster can replicate their application states to all OC4J processes. State replication is the process by which the different OC4J processes are made aware of the status of processing applications.

Suppose, for example, process 1 is servicing a client request, and after a few interactions with the client, process 1 fails. State replication ensures that another process, process 2 for example, is made aware of the status of the client request that process 1 was handling, enabling it to take over that request from process 1.

You can implement state replication effectively through the use of OC4J islands. And by having an application server cluster that is made up of multiple nodes, you provide load-balancing for the client requests and failover for the nodes. To effectively protect clients against software and hardware failures and the loss of state, you should configure at least two OC4J processes on two or more hosts in the same island.

As a summary of High availability and state replication in OracleAS. To provide application-level high availability, OracleAS uses session replication and state replication. With session replication, the OC4J processes replicate their session states with other OC4J processes in the same island. State replication is the practice whereby the different OC4J processes are made aware of the status of processing applications.