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. Sub-classes 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