Class JreCompat

java.lang.Object
org.apache.tomcat.util.compat.JreCompat
Direct Known Subclasses:
Jre19Compat

public class JreCompat extends Object
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 Details

    • JreCompat

      public JreCompat()
  • Method Details

    • getInstance

      public static JreCompat getInstance()
    • isGraalAvailable

      public static boolean isGraalAvailable()
    • isJre19Available

      public static boolean isJre19Available()
    • isJre21Available

      public static boolean isJre21Available()
    • isJre22Available

      public static boolean isJre22Available()
    • getExecutor

      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 found
      SecurityException - If a security exception occurs while trying to identify the executor
      IllegalArgumentException - If the instance object does not match the class of the field when obtaining a field value via reflection
      IllegalAccessException - If a field is not accessible due to access restrictions
    • createVirtualThreadBuilder

      public Object createVirtualThreadBuilder(String name)
      Create a thread builder for virtual threads using the given name to name the threads.
      Parameters:
      name - The base name for the threads
      Returns:
      The thread buidler for virtual threads
    • threadBuilderStart

      public void threadBuilderStart(Object threadBuilder, Runnable command)
      Create a thread with the given thread builder and use it to execute the given runnable.
      Parameters:
      threadBuilder - The thread builder to use to create a thread
      command - The command to run
    • callAs

      public <T> T callAs(Subject subject, Callable<T> action) throws CompletionException
      Throws:
      CompletionException
    • isCanonCachesDisabled

      public boolean isCanonCachesDisabled()
    • disableCanonCaches

      public boolean disableCanonCaches()
      Disable the global canonical file cache.
      Returns:
      true if the global canonical file cache was already disabled prior to this call or was disabled as a result of this call, otherwise false