Package org.apache.tomcat.util.compat

## Class Jre19Compat

- java.lang.Object
- - org.apache.tomcat.util.compat.JreCompat
  - - org.apache.tomcat.util.compat.Jre19Compat

- Direct Known Subclasses:
    `Jre21Compat`

      public class Jre19Compat
      extends JreCompat

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static java.lang.reflect.Method` | `getApplicationProtocolMethod` |
    `protected static java.lang.reflect.Method` | `setApplicationProtocolsMethod` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Jre19Compat()` |

  - ### 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.
    `boolean` | `canAccess​(java.lang.Object base, java.lang.reflect.AccessibleObject accessibleObject)` | Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
    `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.
    `java.security.KeyStore.LoadStoreParameter` | `getDomainLoadStoreParameter​(java.net.URI uri)` |
    `java.lang.Object` | `getExecutor​(java.lang.Thread thread)` | Obtains the executor, if any, used to create the provided thread.
    `java.lang.String` | `getModuleName​(java.lang.Class<?> type)` | What is the module of the given class?
    `static boolean` | `isAlpnSupported()` |
    `boolean` | `isExported​(java.lang.Class<?> type)` | Is the given class in an exported package?
    `boolean` | `isInstanceOfInaccessibleObjectException​(java.lang.Throwable t)` | Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.
    `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.
    `int` | `jarFileRuntimeMajorVersion()` |
    `void` | `setApplicationProtocols​(javax.net.ssl.SSLParameters sslParameters, java.lang.String[] protocols)` | Set the application protocols the server will accept for ALPN
    `void` | `setUseServerCipherSuitesOrder​(javax.net.ssl.SSLParameters sslParameters, boolean useCipherSuitesOrder)` |

    - ### Methods inherited from class org.apache.tomcat.util.compat.JreCompat

      `createVirtualThreadBuilder, getInstance, isJre11Available, isJre16Available, isJre19Available, isJre21Available, isJre8Available, isJre9Available, jarFileNewInstance, threadBuilderStart`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### setApplicationProtocolsMethod

          protected static final java.lang.reflect.Method setApplicationProtocolsMethod

    - #### getApplicationProtocolMethod

          protected static final java.lang.reflect.Method getApplicationProtocolMethod

  - ### Constructor Detail

    - #### Jre19Compat

          public Jre19Compat()

  - ### Method Detail

    - #### getExecutor

          public java.lang.Object getExecutor​(java.lang.Thread thread)
                                       throws java.lang.NoSuchFieldException,
                                              java.lang.SecurityException,
                                              java.lang.IllegalArgumentException,
                                              java.lang.IllegalAccessException

      Description copied from class: `JreCompat`
      Obtains the executor, if any, used to create the provided thread.
      Overrides:
        `getExecutor` in class `JreCompat`
      Parameters:
        `thread` - The thread to examine
      Returns:
        The executor, if any, that created the provided thread
      Throws:
        `java.lang.NoSuchFieldException` - If a field used via reflection to obtain the executor cannot be found
        `java.lang.SecurityException` - If a security exception occurs while trying to identify the executor
        `java.lang.IllegalArgumentException` - If the instance object does not match the class of the field when obtaining a field value via reflection
        `java.lang.IllegalAccessException` - If a field is not accessible due to access restrictions

    - #### isInstanceOfInaccessibleObjectException

          public boolean isInstanceOfInaccessibleObjectException​(java.lang.Throwable t)

      Description copied from class: `JreCompat`
      Test if the provided exception is an instance of java.lang.reflect.InaccessibleObjectException.
      Overrides:
        `isInstanceOfInaccessibleObjectException` in class `JreCompat`
      Parameters:
        `t` - The exception to test
      Returns:
        `true` if the exception is an instance of InaccessibleObjectException, otherwise `false`

    - #### disableCachingForJarUrlConnections

          public void disableCachingForJarUrlConnections()
                                                  throws java.io.IOException

      Description copied from class: `JreCompat`
      Disables caching for JAR URL connections. For Java 8 and earlier, this also disables caching for ALL URL connections.
      Overrides:
        `disableCachingForJarUrlConnections` in class `JreCompat`
      Throws:
        `java.io.IOException` - If a dummy JAR URLConnection can not be created

    - #### addBootModulePath

          public void addBootModulePath​(java.util.Deque<java.net.URL> classPathUrlsToProcess)

      Description copied from class: `JreCompat`
      Obtains the URLs for all the JARs on the module path when the JVM starts and adds them to the provided Deque.
      Overrides:
        `addBootModulePath` in class `JreCompat`
      Parameters:
        `classPathUrlsToProcess` - The Deque to which the modules should be added

    - #### jarFileNewInstance

          public java.util.jar.JarFile jarFileNewInstance​(java.io.File f)
                                                   throws java.io.IOException

      Description copied from class: `JreCompat`
      Creates a new JarFile instance. When running on Java 9 and later, the JarFile will be multi-release JAR aware.
      Overrides:
        `jarFileNewInstance` in class `JreCompat`
      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)

      Description copied from class: `JreCompat`
      Is this JarFile a multi-release JAR file.
      Overrides:
        `jarFileIsMultiRelease` in class `JreCompat`
      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()

    - #### canAccess

          public boolean canAccess​(java.lang.Object base,
                                   java.lang.reflect.AccessibleObject accessibleObject)

      Description copied from class: `JreCompat`
      Is the accessibleObject accessible (as a result of appropriate module exports) on the provided instance?
      Overrides:
        `canAccess` in class `JreCompat`
      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}

    - #### isExported

          public boolean isExported​(java.lang.Class<?> type)

      Description copied from class: `JreCompat`
      Is the given class in an exported package?
      Overrides:
        `isExported` in class `JreCompat`
      Parameters:
        `type` - The class to test
      Returns:
        Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+

    - #### getModuleName

          public java.lang.String getModuleName​(java.lang.Class<?> type)

      Description copied from class: `JreCompat`
      What is the module of the given class?
      Overrides:
        `getModuleName` in class `JreCompat`
      Parameters:
        `type` - The class to test
      Returns:
        Always `true` for Java 8. `true` if the enclosing package is exported for Java 9+

    - #### setUseServerCipherSuitesOrder

          public void setUseServerCipherSuitesOrder​(javax.net.ssl.SSLParameters sslParameters,
                                                    boolean useCipherSuitesOrder)

      Overrides:
        `setUseServerCipherSuitesOrder` in class `JreCompat`

    - #### getDomainLoadStoreParameter

          public java.security.KeyStore.LoadStoreParameter getDomainLoadStoreParameter​(java.net.URI uri)

      Overrides:
        `getDomainLoadStoreParameter` in class `JreCompat`

    - #### setApplicationProtocols

          public void setApplicationProtocols​(javax.net.ssl.SSLParameters sslParameters,
                                              java.lang.String[] protocols)

      Description copied from class: `JreCompat`
      Set the application protocols the server will accept for ALPN
      Overrides:
        `setApplicationProtocols` in class `JreCompat`
      Parameters:
        `sslParameters` - The SSL parameters for a connection
        `protocols` - The application protocols to be allowed for that connection

    - #### getApplicationProtocol

          public java.lang.String getApplicationProtocol​(javax.net.ssl.SSLEngine sslEngine)

      Description copied from class: `JreCompat`
      Get the application protocol that has been negotiated for connection associated with the given SSLEngine.
      Overrides:
        `getApplicationProtocol` in class `JreCompat`
      Parameters:
        `sslEngine` - The SSLEngine for which to obtain the negotiated protocol
      Returns:
        The name of the negotiated protocol

    - #### isAlpnSupported

          public static boolean isAlpnSupported()