mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
171 lines
6.8 KiB
Java
171 lines
6.8 KiB
Java
/*
|
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 only, as
|
|
* published by the Free Software Foundation. Oracle designates this
|
|
* particular file as subject to the "Classpath" exception as provided
|
|
* by Oracle in the LICENSE file that accompanied this code.
|
|
*
|
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
* accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU General Public License version
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
* questions.
|
|
*/
|
|
|
|
|
|
package javax.net.ssl;
|
|
|
|
import java.util.Enumeration;
|
|
|
|
|
|
/**
|
|
* A {@code SSLSessionContext} represents a set of
|
|
* {@code SSLSession}s associated with a single entity. For example,
|
|
* it could be associated with a server or client who participates in many
|
|
* sessions concurrently.
|
|
* <p>
|
|
* Not all environments will contain session contexts. For example, stateless
|
|
* session resumption.
|
|
* <p>
|
|
* Session contexts may not contain all sessions. For example, stateless
|
|
* sessions are not stored in the session context.
|
|
* <p>
|
|
* There are {@code SSLSessionContext} parameters that affect how
|
|
* sessions are stored:
|
|
* <UL>
|
|
* <LI>Sessions can be set to expire after a specified
|
|
* time limit.
|
|
* <LI>The number of sessions that can be stored in context
|
|
* can be limited.
|
|
* </UL>
|
|
* A session can be retrieved based on its session id, and all session id's
|
|
* in a {@code SSLSessionContext} can be listed.
|
|
*
|
|
* @see SSLSession
|
|
*
|
|
* @since 1.4
|
|
* @author Nathan Abramson
|
|
* @author David Brownell
|
|
*/
|
|
public interface SSLSessionContext {
|
|
|
|
/**
|
|
* Returns the {@code SSLSession} bound to the specified session id.
|
|
*
|
|
* @param sessionId the Session identifier
|
|
* @return the {@code SSLSession} or null if
|
|
* the specified session id does not refer to a valid SSLSession.
|
|
*
|
|
* @throws NullPointerException if {@code sessionId} is null.
|
|
*/
|
|
SSLSession getSession(byte[] sessionId);
|
|
|
|
/**
|
|
* Returns an Enumeration of all known session id's grouped under this
|
|
* {@code SSLSessionContext}.
|
|
* <p>Session contexts may not contain all sessions. For example,
|
|
* stateless sessions are not stored in the session context.
|
|
*
|
|
* @return an enumeration of all the Session id's
|
|
*/
|
|
Enumeration<byte[]> getIds();
|
|
|
|
/**
|
|
* Sets the timeout limit for {@code SSLSession} objects grouped
|
|
* under this {@code SSLSessionContext}.
|
|
* <p>
|
|
* 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
|
|
* {@code SSLSession} object is marked so that future connections
|
|
* cannot resume or rejoin the session. Active sessions can continue
|
|
* to be used so long as resume and rejoin operations are not attempted.
|
|
* A check for sessions exceeding the timeout is made immediately whenever
|
|
* the timeout limit is changed for this {@code SSLSessionContext}.
|
|
*
|
|
* @apiNote Note that the JDK Implementation uses default values for both
|
|
* the session cache size and timeout. See
|
|
* {@code getSessionCacheSize} and {@code getSessionTimeout} for
|
|
* more information. Applications should consider their
|
|
* performance requirements and override the defaults if necessary.
|
|
*
|
|
* @param seconds the new session timeout limit in seconds; zero means
|
|
* there is no limit.
|
|
*
|
|
* @throws IllegalArgumentException if the timeout specified is {@code < 0}.
|
|
*
|
|
* @see #getSessionTimeout
|
|
*/
|
|
void setSessionTimeout(int seconds);
|
|
|
|
/**
|
|
* Returns the timeout limit of {@code SSLSession} objects grouped
|
|
* under this {@code SSLSessionContext}.
|
|
* <p>
|
|
* 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
|
|
* {@code SSLSession} object is marked so that future connections
|
|
* cannot resume or rejoin the session. Active sessions can continue
|
|
* to be used so long as resume and rejoin operations are not attempted.
|
|
* A check for sessions exceeding the timeout limit is made immediately
|
|
* whenever the timeout limit is changed for this
|
|
* {@code SSLSessionContext}.
|
|
*
|
|
* @implNote The JDK implementation returns the session timeout as set by
|
|
* the {@code setSessionTimeout} method, or if not set, a default
|
|
* value of 86400 seconds (24 hours).
|
|
*
|
|
* @return the session timeout limit in seconds; zero means there is no
|
|
* limit.
|
|
*
|
|
* @see #setSessionTimeout
|
|
*/
|
|
int getSessionTimeout();
|
|
|
|
/**
|
|
* Sets the size of the cache used for storing {@code SSLSession}
|
|
* objects grouped under this {@code SSLSessionContext}.
|
|
*
|
|
* @apiNote Note that the JDK Implementation uses default values for both
|
|
* the session cache size and timeout. See
|
|
* {@code getSessionCacheSize} and {@code getSessionTimeout} for
|
|
* more information. Applications should consider their
|
|
* performance requirements and override the defaults if necessary.
|
|
*
|
|
* @param size the new session cache size limit; zero means there is no
|
|
* limit.
|
|
*
|
|
* @throws IllegalArgumentException if the specified size is {@code < 0}.
|
|
*
|
|
* @see #getSessionCacheSize
|
|
*/
|
|
void setSessionCacheSize(int size);
|
|
|
|
/**
|
|
* Returns the size of the cache used for storing {@code SSLSession}
|
|
* objects grouped under this {@code SSLSessionContext}.
|
|
*
|
|
* @implNote The JDK implementation returns the cache size as set by
|
|
* the {@code setSessionCacheSize} method, or if not set, the
|
|
* value of the {@systemProperty javax.net.ssl.sessionCacheSize}
|
|
* system property. If neither is set, it returns a default
|
|
* value of 20480.
|
|
*
|
|
* @return size of the session cache; zero means there is no size limit.
|
|
*
|
|
* @see #setSessionCacheSize
|
|
*/
|
|
int getSessionCacheSize();
|
|
}
|