Package org.apache.tomcat.util.compat
Class Jre21Compat
- java.lang.Object
-
- org.apache.tomcat.util.compat.JreCompat
-
- org.apache.tomcat.util.compat.Jre19Compat
-
- org.apache.tomcat.util.compat.Jre21Compat
-
public class Jre21Compat extends Jre19Compat
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.reflect.Method
getApplicationProtocolMethod
protected static java.lang.reflect.Method
setApplicationProtocolsMethod
-
Constructor Summary
Constructors Constructor Description Jre21Compat()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBootModulePath(java.util.Deque<java.net.URL> classPathUrlsToProcess)
Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.boolean
canAccess(java.lang.Object base, java.lang.reflect.AccessibleObject accessibleObject)
Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?java.lang.Object
createVirtualThreadBuilder(java.lang.String name)
Create a thread builder for virtual threads using the given name to name the threads.void
disableCachingForJarUrlConnections()
Disables caching for JAR URL connections.java.lang.String
getApplicationProtocol(javax.net.ssl.SSLEngine sslEngine)
Get the application protocol that has been negotiated for connection associated with the given SSLEngine.java.security.KeyStore.LoadStoreParameter
getDomainLoadStoreParameter(java.net.URI uri)
java.lang.String
getModuleName(java.lang.Class<?> type)
What is the module of the given class?static boolean
isAlpnSupported()
boolean
isExported(java.lang.Class<?> type)
Is the given class in an exported package?boolean
isInstanceOfInaccessibleObjectException(java.lang.Throwable t)
Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.boolean
jarFileIsMultiRelease(java.util.jar.JarFile jarFile)
Is this JarFile a multi-release JAR file.java.util.jar.JarFile
jarFileNewInstance(java.io.File f)
Creates a new JarFile instance.int
jarFileRuntimeMajorVersion()
void
setApplicationProtocols(javax.net.ssl.SSLParameters sslParameters, java.lang.String[] protocols)
Set the application protocols the server will accept for ALPNvoid
setUseServerCipherSuitesOrder(javax.net.ssl.SSLParameters sslParameters, boolean useCipherSuitesOrder)
void
threadBuilderStart(java.lang.Object threadBuilder, java.lang.Runnable command)
Create a thread with the given thread builder and use it to execute the given runnable.-
Methods inherited from class org.apache.tomcat.util.compat.Jre19Compat
getExecutor
-
Methods inherited from class org.apache.tomcat.util.compat.JreCompat
getInstance, isJre11Available, isJre16Available, isJre19Available, isJre21Available, isJre8Available, isJre9Available, jarFileNewInstance
-
-
-
-
Method Detail
-
createVirtualThreadBuilder
public java.lang.Object createVirtualThreadBuilder(java.lang.String name)
Description copied from class:JreCompat
Create a thread builder for virtual threads using the given name to name the threads.- Overrides:
createVirtualThreadBuilder
in classJreCompat
- Parameters:
name
- The base name for the threads- Returns:
- The thread buidler for virtual threads
-
threadBuilderStart
public void threadBuilderStart(java.lang.Object threadBuilder, java.lang.Runnable command)
Description copied from class:JreCompat
Create a thread with the given thread builder and use it to execute the given runnable.- Overrides:
threadBuilderStart
in classJreCompat
- Parameters:
threadBuilder
- The thread builder to use to create a threadcommand
- The command to run
-
isInstanceOfInaccessibleObjectException
public boolean isInstanceOfInaccessibleObjectException(java.lang.Throwable t)
Description copied from class:JreCompat
Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.- Overrides:
isInstanceOfInaccessibleObjectException
in classJreCompat
- Parameters:
t
- The exception to test- Returns:
true
if the exception is an instance of InaccessibleObjectException, otherwisefalse
-
disableCachingForJarUrlConnections
public void disableCachingForJarUrlConnections() throws java.io.IOException
Description copied from class:JreCompat
Disables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.- Overrides:
disableCachingForJarUrlConnections
in classJreCompat
- Throws:
java.io.IOException
- If a dummy JAR URLConnection can not be created
-
addBootModulePath
public void addBootModulePath(java.util.Deque<java.net.URL> classPathUrlsToProcess)
Description copied from class:JreCompat
Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.- Overrides:
addBootModulePath
in classJreCompat
- Parameters:
classPathUrlsToProcess
- The Deque to which the modules should be added
-
jarFileNewInstance
public java.util.jar.JarFile jarFileNewInstance(java.io.File f) throws java.io.IOException
Description copied from class:JreCompat
Creates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware.- Overrides:
jarFileNewInstance
in classJreCompat
- Parameters:
f
- The JAR file to open- Returns:
- A JarFile instance based on the provided file
- Throws:
java.io.IOException
- If an I/O error occurs creating the JarFile instance
-
jarFileIsMultiRelease
public boolean jarFileIsMultiRelease(java.util.jar.JarFile jarFile)
Description copied from class:JreCompat
Is this JarFile a multi-release JAR file.- Overrides:
jarFileIsMultiRelease
in classJreCompat
- Parameters:
jarFile
- The JarFile to test- Returns:
true
If it is a multi-release JAR file and is configured to behave as such.
-
jarFileRuntimeMajorVersion
public int jarFileRuntimeMajorVersion()
-
canAccess
public boolean canAccess(java.lang.Object base, java.lang.reflect.AccessibleObject accessibleObject)
Description copied from class:JreCompat
Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
-
isExported
public boolean isExported(java.lang.Class<?> type)
Description copied from class:JreCompat
Is the given class in an exported package?- Overrides:
isExported
in classJreCompat
- Parameters:
type
- The class to test- Returns:
- Always
true
for Java 8.true
if the enclosing package is exported for Java 9+
-
getModuleName
public java.lang.String getModuleName(java.lang.Class<?> type)
Description copied from class:JreCompat
What is the module of the given class?- Overrides:
getModuleName
in classJreCompat
- Parameters:
type
- The class to test- Returns:
- Always
true
for Java 8.true
if the enclosing package is exported for Java 9+
-
setUseServerCipherSuitesOrder
public void setUseServerCipherSuitesOrder(javax.net.ssl.SSLParameters sslParameters, boolean useCipherSuitesOrder)
- Overrides:
setUseServerCipherSuitesOrder
in classJreCompat
-
getDomainLoadStoreParameter
public java.security.KeyStore.LoadStoreParameter getDomainLoadStoreParameter(java.net.URI uri)
- Overrides:
getDomainLoadStoreParameter
in classJreCompat
-
setApplicationProtocols
public void setApplicationProtocols(javax.net.ssl.SSLParameters sslParameters, java.lang.String[] protocols)
Description copied from class:JreCompat
Set the application protocols the server will accept for ALPN- Overrides:
setApplicationProtocols
in classJreCompat
- Parameters:
sslParameters
- The SSL parameters for a connectionprotocols
- The application protocols to be allowed for that connection
-
getApplicationProtocol
public java.lang.String getApplicationProtocol(javax.net.ssl.SSLEngine sslEngine)
Description copied from class:JreCompat
Get the application protocol that has been negotiated for connection associated with the given SSLEngine.- Overrides:
getApplicationProtocol
in classJreCompat
- Parameters:
sslEngine
- The SSLEngine for which to obtain the negotiated protocol- Returns:
- The name of the negotiated protocol
-
isAlpnSupported
public static boolean isAlpnSupported()
-
-