Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
gnu.javax.net.ssl.AbstractSessionContext
SSLSessionContext
. This class may
be subclassed to add extended functionality to session contexts, such
as by storing sessions in files on disk, or by sharing contexts
across different JVM instances.
In order to securely store sessions, along with private key data,
the abstract methods and store(char[])
come into play. When storing sessions, a session context implementation
must pass this password to the Session.prepare(char[])
method,
before either writing the Serializable
session to the
underlying store, or getting the opaque Session.privateData()
class from the session, and storing that.
As a simple example, that writes sessions to some object output stream:
char[] password = ...; ObjectOutputStream out = ...; ... for (Session s : this) { s.prepare(password); out.writeObject(s); }
The reverse must be done when deserializing sessions, by using the
Session.repair(char[])
method, possibly by first calling
Session.setPrivateData(java.io.Serializable)
with the read,
opaque private data type. Thus an example of reading may be:
char[] password = ...; ObjectInputStream in = ...; ... while (hasMoreSessions(in)) { Session s = (Session) in.readObject(); s.repair(password); addToThisStore(s); }
Field Summary | |
protected long |
Constructor Summary | |
|
Method Summary | |
SSLSession |
|
SSLSession |
|
int | |
protected abstract Session |
|
abstract void |
|
static AbstractSessionContext |
|
abstract void | |
abstract void |
|
void |
|
abstract void |
|
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
protected AbstractSessionContext(int timeout)
- Parameters:
timeout
- The initial session timeout.
public final SSLSession getSession(byte[] sessionId)
Fetch a saved session by its ID. This method will (possibly) deserialize and return the SSL session with that ID, or null if the requested session does not exist, or has expired.Subclasses implementing this class must not perform any blocking operations in this method. If any blocking behavior is required, it must be done in the
load(char[])
method.
- Specified by:
- getSession in interface SSLSessionContext
- Parameters:
sessionId
- The ID of the session to get.
- Returns:
- The found session, or null if no such session was found, or if that session has expired.
public int getSessionTimeout()
- Specified by:
- getSessionTimeout in interface SSLSessionContext
protected abstract Session implGet(byte[] sessionId)
To be implemented by subclasses. Subclasses do not need to check timeouts in this method.
- Parameters:
sessionId
- The session ID.
- Returns:
- The session, or
null
if the requested session was not found.
public abstract void load(char[] password) throws SessionStoreException
Load this session store from the underlying media, if supported by the implementation.
- Parameters:
password
- The password that protects the sensitive data in this store.
- Throws:
SessionStoreException
- If reading this store fails, such as when an I/O exception occurs, or if the password is incorrect.
public static AbstractSessionContext newInstance() throws SSLException
Create a new instance of a session context, according to the configured implementation class.
- Returns:
- The new session context.
- Throws:
SSLException
- If an error occurs in creating the instance.
public abstract void put(Session session)
Add a new session to the store. The underlying implementation will add the session to its store, possibly overwriting any existing session with the same ID.Subclasses implementing this class must not perform any blocking operations in this method. If any blocking behavior is required, it must be done in the
store(char[])
method.
- Parameters:
session
- The session to add.
- Throws:
NullPointerException
- If the argument is null.
public abstract void remove(byte[] sessionId)
Remove a session from this store.Subclasses implementing this class must not perform any blocking operations in this method. If any blocking behavior is required, it must be done in the
store(char[])
method.
- Parameters:
sessionId
- The ID of the session to remove.
public final void setSessionTimeout(int seconds)
- Specified by:
- setSessionTimeout in interface SSLSessionContext
public abstract void store(char[] password) throws SessionStoreException
Commit this session store to the underlying media. For session store implementations that support saving sessions across invocations of the JVM, this method will save any sessions that have not expired to some persistent media, so they may be loaded and used again later.
- Parameters:
password
- The password that will protect the sensitive data in this store.