Package org.apache.tomcat.util.compat
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 7. Sub-classes may extend this class and provide
 alternative implementations for later JRE versions
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddBootModulePath(Deque<URL> classPathUrlsToProcess) Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.booleancanAccess(Object base, AccessibleObject accessibleObject) Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?Create a thread builder for virtual threads using the given name to name the threads.voidDisables caching for JAR URL connections.getApplicationProtocol(SSLEngine sslEngine) Get the application protocol that has been negotiated for connection associated with the given SSLEngine.getExecutor(Thread thread) Obtains the executor, if any, used to create the provided thread.static JreCompatgetModuleName(Class<?> type) What is the module of the given class?static booleanbooleanisExported(Class<?> type) Is the given class in an exported package?booleanTest if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.static booleanstatic booleanstatic booleanstatic booleanstatic booleanstatic booleanbooleanjarFileIsMultiRelease(JarFile jarFile) Is this JarFile a multi-release JAR file.Creates a new JarFile instance.final JarFileCreates a new JarFile instance.intvoidsetApplicationProtocols(SSLParameters sslParameters, String[] protocols) Set the application protocols the server will accept for ALPNvoidsetUseServerCipherSuitesOrder(SSLParameters engine, boolean useCipherSuitesOrder) voidthreadBuilderStart(Object threadBuilder, Runnable command) Create a thread with the given thread builder and use it to execute the given runnable.
- 
Constructor Details- 
JreCompatpublic JreCompat()
 
- 
- 
Method Details- 
getInstance
- 
isAlpnSupportedpublic static boolean isAlpnSupported()
- 
isJre8Availablepublic static boolean isJre8Available()
- 
isJre9Availablepublic static boolean isJre9Available()
- 
isJre11Availablepublic static boolean isJre11Available()
- 
isJre16Availablepublic static boolean isJre16Available()
- 
isJre19Availablepublic static boolean isJre19Available()
- 
isJre21Availablepublic static boolean isJre21Available()
- 
setUseServerCipherSuitesOrder
- 
getDomainLoadStoreParameter
- 
isInstanceOfInaccessibleObjectExceptionTest if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.- Parameters:
- t- The exception to test
- Returns:
- trueif the exception is an instance of InaccessibleObjectException, otherwise- false
 
- 
setApplicationProtocolsSet the application protocols the server will accept for ALPN- Parameters:
- sslParameters- The SSL parameters for a connection
- protocols- The application protocols to be allowed for that connection
 
- 
getApplicationProtocolGet the application protocol that has been negotiated for connection associated with the given SSLEngine.- Parameters:
- sslEngine- The SSLEngine for which to obtain the negotiated protocol
- Returns:
- The name of the negotiated protocol
 
- 
disableCachingForJarUrlConnectionsDisables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.- Throws:
- IOException- If a dummy JAR URLConnection can not be created
 
- 
addBootModulePathObtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.- Parameters:
- classPathUrlsToProcess- The Deque to which the modules should be added
 
- 
jarFileNewInstanceCreates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware. While this isn't strictly required to be in this package, it is provided as a convenience method.- Parameters:
- s- The JAR file to open
- Returns:
- A JarFile instance based on the provided path
- Throws:
- IOException- If an I/O error occurs creating the JarFile instance
 
- 
jarFileNewInstanceCreates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware.- Parameters:
- f- The JAR file to open
- Returns:
- A JarFile instance based on the provided file
- Throws:
- IOException- If an I/O error occurs creating the JarFile instance
 
- 
jarFileIsMultiReleaseIs this JarFile a multi-release JAR file.- Parameters:
- jarFile- The JarFile to test
- Returns:
- trueIf it is a multi-release JAR file and is configured to behave as such.
 
- 
jarFileRuntimeMajorVersionpublic int jarFileRuntimeMajorVersion()
- 
canAccessIs the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?- Parameters:
- base- The specific instance to be tested.
- accessibleObject- The method/field/constructor to be tested.
- Returns:
- {code true} if the AccessibleObject can be accessed otherwise {code false}
 
- 
isExportedIs the given class in an exported package?- Parameters:
- type- The class to test
- Returns:
- Always truefor Java 8.trueif the enclosing package is exported for Java 9+
 
- 
getModuleNameWhat is the module of the given class?- Parameters:
- type- The class to test
- Returns:
- Always truefor Java 8.trueif the enclosing package is exported for Java 9+
 
- 
getExecutorpublic 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 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
 
- 
createVirtualThreadBuilderCreate 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
 
- 
threadBuilderStartCreate 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
 
 
-