Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

# SSLSessionContext


`
public


interface
SSLSessionContext
`


`


`

|---|
| javax.net.ssl.SSLSessionContext |

<br />

*** ** * ** ***

A `SSLSessionContext` represents a set of
`SSLSession`s associated with a single entity. For example,
it could be associated with a server or client who participates in many
sessions concurrently.


Not all environments will contain session contexts.


There are `SSLSessionContext` parameters that affect how
sessions are stored:

- Sessions can be set to expire after a specified time limit.
- The number of sessions that can be stored in context can be limited.

A session can be retrieved based on its session id, and all session id's in a `SSLSessionContext` can be listed.

<br />

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SSLSession`

## Summary

| ### Public methods ||
|---|---|
| ` abstract https://developer.android.com/reference/java/util/Enumeration<byte[]>` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getIds()() ` Returns an Enumeration of all session id's grouped under this `SSLSessionContext`. |
| ` abstract https://developer.android.com/reference/javax/net/ssl/SSLSession` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getSession(byte[])(byte[] sessionId) ` Returns the `SSLSession` bound to the specified session id. |
| ` abstract int` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getSessionCacheSize()() ` Returns the size of the cache used for storing `SSLSession` objects grouped under this `SSLSessionContext`. |
| ` abstract int` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getSessionTimeout()() ` Returns the timeout limit of `SSLSession` objects grouped under this `SSLSessionContext`. |
| ` abstract void` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#setSessionCacheSize(int)(int size) ` Sets the size of the cache used for storing `SSLSession` objects grouped under this `SSLSessionContext`. |
| ` abstract void` | ` https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#setSessionTimeout(int)(int seconds) ` Sets the timeout limit for `SSLSession` objects grouped under this `SSLSessionContext`. |

## Public methods

### getIds

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Enumeration<byte[]> getIds ()
```

Returns an Enumeration of all session id's grouped under this
`SSLSessionContext`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Enumeration<byte[]>` | an enumeration of all the Session id's <br /> |

### getSession

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract SSLSession getSession (byte[] sessionId)
```

Returns the `SSLSession` bound to the specified session id.

<br />

| Parameters ||
|---|---|
| `sessionId` | `byte`: the Session identifier <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/net/ssl/SSLSession` | the `SSLSession` or null if the specified session id does not refer to a valid SSLSession. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if `sessionId` is null. |

### getSessionCacheSize

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getSessionCacheSize ()
```

Returns the size of the cache used for storing `SSLSession`
objects grouped under this `SSLSessionContext`.

<br />

##### Implementation Note:

- The JDK implementation returns the cache size as set by the `setSessionCacheSize` method, or if not set, the value of the `javax.net.ssl.sessionCacheSize` system property. If neither is set, it returns a default value of 20480.

| Returns ||
|---|---|
| `int` | size of the session cache; zero means there is no size limit. <br /> |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#setSessionCacheSize(int)`

### getSessionTimeout

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getSessionTimeout ()
```

Returns the timeout limit of `SSLSession` objects grouped
under this `SSLSessionContext`.


If the timeout limit is set to 't' seconds, a session exceeds the
timeout limit 't' seconds after its creation time.
When the timeout limit is exceeded for a session, the
`SSLSession` object is invalidated and future connections
cannot resume or rejoin the session.
A check for sessions exceeding the timeout limit is made immediately
whenever the timeout limit is changed for this
`SSLSessionContext`.

<br />

##### Implementation Note:

- The JDK implementation returns the session timeout as set by the `setSessionTimeout` method, or if not set, a default value of 86400 seconds (24 hours).

| Returns ||
|---|---|
| `int` | the session timeout limit in seconds; zero means there is no limit. <br /> |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#setSessionTimeout(int)`

### setSessionCacheSize

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setSessionCacheSize (int size)
```

Sets the size of the cache used for storing `SSLSession`
objects grouped under this `SSLSessionContext`.

<br />

##### API Note:

- Note that the JDK Implementation uses default values for both the session cache size and timeout. See `getSessionCacheSize` and `getSessionTimeout` for more information. Applications should consider their performance requirements and override the defaults if necessary.

| Parameters ||
|---|---|
| `size` | `int`: the new session cache size limit; zero means there is no limit. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the specified size is `< 0`. |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getSessionCacheSize()`

### setSessionTimeout

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setSessionTimeout (int seconds)
```

Sets the timeout limit for `SSLSession` objects grouped
under this `SSLSessionContext`.


If the timeout limit is set to 't' seconds, a session exceeds the
timeout limit 't' seconds after its creation time.
When the timeout limit is exceeded for a session, the
`SSLSession` object is invalidated and future connections
cannot resume or rejoin the session.
A check for sessions exceeding the timeout is made immediately whenever
the timeout limit is changed for this `SSLSessionContext`.

<br />

##### API Note:

- Note that the JDK Implementation uses default values for both the session cache size and timeout. See `getSessionCacheSize` and `getSessionTimeout` for more information. Applications should consider their performance requirements and override the defaults if necessary.

| Parameters ||
|---|---|
| `seconds` | `int`: the new session timeout limit in seconds; zero means there is no limit. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the timeout specified is `< 0`. |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SSLSessionContext#getSessionTimeout()`