Sun Java System Application Server Enterprise Edition 8.1 2005Q2 High Availability Administration Guide

- Previous: Chapter 7 Configuring Node Agents
- Next: Setting Up High Availability Session Persistence

# Overview of Session Persistence and Failover

Application Server provides high availability session persistence through failover of HTTP session data and stateful session bean (SFSB) session data. Failover means that in the event of an server instance or hardware failure, another server instance takes over a distributed session.

## Requirements

A distributed session can run in multiple Sun Java System Application Server instances, if:

- Each server instance has access to the same high-availability database (HADB). For information about how to enable this database, see configure-ha-cluster(1).

- Each server instance has the same distributable web application deployed to it. The `web-app` element of the `web.xml` deployment descriptor file must contain the `distributable` element.

- The web application uses high-availability session persistence. If a non-distributable web application is configured to use high-availability session persistence, the server writes an error to the log file.

- The web application must be deployed using the `deploy` or `deploydir` command with the `--availabilityenabled` option set to `true`. For more information on these commands, see deploy(1) and deploydir(1).

## Restrictions

When a session fails over, any references to open files or network connections are lost. Applications must be coded with this restriction in mind.

You can only bind certain objects to distributed sessions that support failover. Contrary to the Servlet 2.4 specification, Sun Java System Application Server does not throw an `IllegalArgumentException` if an object type not supported for failover is bound into a distributed session.

You can bind the following objects into a distributed session that supports failover:

- Local home and object references for all EJB components.

- Co-located entity bean, stateful session bean, and distributed entity bean remote home reference, remote reference

- Distributed session bean remote home and remote references

- JNDI Context for `InitialContext` and `java:comp/env.`

- `UserTransaction` objects. However, if the instance that fails is never restarted, any prepared global transactions are lost and might not be correctly rolled back or committed.

- Serializable Java types

You cannot bind the following object types into sessions that support failover:

- JDBC DataSource

- Java Message Service (JMS) `ConnectionFactory` and `Destination` objects

- JavaMail™ Session

- Connection Factory

- Administered Objects.

- Web service reference

In general, for these objects, failover will not work. However, failover might work in some cases, if for example the object is serializable.

## Sample Applications

The following directories contain sample applications that demonstrate session persistence:

    install_dir/samples/ee-samples/highavailability
    install_dir/samples/ee-samples/failover

The following sample application demonstrates SFSB session persistence:

    install_dir/samples/ee-samples/failover/apps/sfsbfailover

- Previous: Chapter 7 Configuring Node Agents
- Next: Setting Up High Availability Session Persistence

- © 2010, Oracle Corporation and/or its affiliates