Class JreCompat
java.lang.Object
org.apache.tomcat.util.compat.JreCompat
- Direct Known Subclasses:
Jre19Compat
This is the base implementation class for JRE compatibility and provides an implementation based on Java 17.
Subclasses may extend this class and provide alternative implementations for later JRE versions
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<T> TCreate a thread builder for virtual threads using the given name to name the threads.booleanDisable the global canonical file cache.getExecutor(Thread thread) Obtains the executor, if any, used to create the provided thread.static JreCompatGet the current JreCompat instance.booleanstatic booleanCheck if Graal is available.static booleanstatic booleanstatic booleanstatic booleanCheck if JRE 22 is available.voidsetNamedGroupsMethod(Object sslParameters, String[] names) TLS groups configuration from JSSE API in Java 20.voidthreadBuilderStart(Object threadBuilder, Runnable command) Create a thread with the given thread builder and use it to execute the given runnable.
-
Constructor Details
-
JreCompat
public JreCompat()Constructs a new JreCompat.
-
-
Method Details
-
getInstance
Get the current JreCompat instance.- Returns:
- the JreCompat instance
-
isGraalAvailable
public static boolean isGraalAvailable()Check if Graal is available.- Returns:
trueif Graal is available
-
isJre19Available
public static boolean isJre19Available() -
isJre20Available
public static boolean isJre20Available() -
isJre21Available
public static boolean isJre21Available() -
isJre22Available
public static boolean isJre22Available()Check if JRE 22 is available.- Returns:
trueif JRE 22 is available
-
getExecutor
public Object getExecutor(Thread thread) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException Obtains the executor, if any, used to create the provided thread.- Parameters:
thread- The thread to examine- Returns:
- The executor, if any, that created the provided thread
- Throws:
NoSuchFieldException- If a field used via reflection to obtain the executor cannot be foundSecurityException- If a security exception occurs while trying to identify the executorIllegalArgumentException- If the instance object does not match the class of the field when obtaining a field value via reflectionIllegalAccessException- If a field is not accessible due to access restrictions
-
createVirtualThreadBuilder
-
threadBuilderStart
-
callAs
- Throws:
CompletionException
-
isCanonCachesDisabled
public boolean isCanonCachesDisabled() -
disableCanonCaches
public boolean disableCanonCaches()Disable the global canonical file cache.- Returns:
trueif the global canonical file cache was already disabled prior to this call or was disabled as a result of this call, otherwisefalse
-
setNamedGroupsMethod
-