org.simpleframework.http.session

## Interface SessionProvider<T>

All Known Implementing Classes:
  SessionManager

    public interface SessionProvider<T>

The `SessionProvider` object is used to create sessions that are active for a given time period. Each session is referenced using a unique key, and only one session exists per key at a time. Once a session has been created it remains active for a fixed time period, this time period is renewed each time that session is open.

When the session provider is no longer required it can be closed. Closing the session provider will cancel and destroy all active sessions, and release all resources occupied by the provider such as threads and memory. Typically it is advisable to close a provider when it is not longer required by the application.

Author:
  Niall Gallagher

### Method Summary

Methods
`void` `close()` This `close` method is used to close the provider and release all resources associated with it.
`Session` `open(T key)` This `open` method is used to either open an existing session or create a new session if one does not exist.
`Session` `open(T key, boolean create)` This `open` method is used to either open an existing session or create a new session if requested.

### Method Detail

#### open

    Session open(T key)
                 throws LeaseException

This `open` method is used to either open an existing session or create a new session if one does not exist. This is always guaranteed to open a session. Upon each open for a given session that sessions expiry is renewed for a fixed period of time, typically this is several minutes long.

Parameters:
  `key` - the unique key identifying the session instance
Returns:
  returns either a new session object or an existing
Throws:
  `LeaseException` - if the keyed session can not be retrieved

#### open

    Session open(T key,
               boolean create)
                 throws LeaseException

This `open` method is used to either open an existing session or create a new session if requested. This is used to optionally create a new session if one does not already exist. This is used in situations where a session might not be required but the existence of one may be queried. Once created a session is active for a fixed time period.

Parameters:
  `key` - the unique key identifying the session instance
Returns:
  returns either a new session object or an existing one
Throws:
  `LeaseException` - if the keyed session can not be retrieved

#### close

    void close()
               throws LeaseException

This `close` method is used to close the provider and release all resources associated with it. This includes canceling all active sessions and emptying the contents of those sessions. All threads and other such resources are released by this method.

Throws:
  `LeaseException` - if the session provider can not be shutdown