Package org.apache.tomcat.util.compat
Class JreCompat
- java.lang.Object
-
- org.apache.tomcat.util.compat.JreCompat
-
public class JreCompat extends java.lang.Object
This is the base implementation class for JRE compatibility and provides an implementation based on Java 8. Sub-classes may extend this class and provide alternative implementations for later JRE versions
-
-
Constructor Summary
Constructors Constructor Description JreCompat()
-
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.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.static JreCompat
getInstance()
static boolean
isGraalAvailable()
boolean
isInstanceOfInaccessibleObjectException(java.lang.Throwable t)
Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.static boolean
isJre9Available()
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.java.util.jar.JarFile
jarFileNewInstance(java.lang.String s)
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 ALPN
-
-
-
Method Detail
-
getInstance
public static JreCompat getInstance()
-
isGraalAvailable
public static boolean isGraalAvailable()
-
isJre9Available
public static boolean isJre9Available()
-
isInstanceOfInaccessibleObjectException
public boolean isInstanceOfInaccessibleObjectException(java.lang.Throwable t)
Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.- Parameters:
t
- The exception to test- Returns:
true
if the exception is an instance of InaccessibleObjectException, otherwisefalse
-
setApplicationProtocols
public void setApplicationProtocols(javax.net.ssl.SSLParameters sslParameters, java.lang.String[] protocols)
Set the application protocols the server will accept for ALPN- 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)
Get 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
-
disableCachingForJarUrlConnections
public void disableCachingForJarUrlConnections() throws java.io.IOException
Disables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.- Throws:
java.io.IOException
- If a dummy JAR URLConnection can not be created
-
addBootModulePath
public 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.- Parameters:
classPathUrlsToProcess
- The Deque to which the modules should be added
-
jarFileNewInstance
public final java.util.jar.JarFile jarFileNewInstance(java.lang.String s) throws java.io.IOException
Creates 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:
java.io.IOException
- If an I/O error occurs creating the JarFile instance
-
jarFileNewInstance
public java.util.jar.JarFile jarFileNewInstance(java.io.File f) throws java.io.IOException
Creates 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:
java.io.IOException
- If an I/O error occurs creating the JarFile instance
-
jarFileIsMultiRelease
public boolean jarFileIsMultiRelease(java.util.jar.JarFile jarFile)
Is this JarFile a multi-release JAR file.- 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()
-
-