Package org.apache.tomcat.util.compat

## 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 11. Sub-classes may extend this class and provide alternative implementations for later JRE versions

### Constructor Summary

Constructors
`JreCompat()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Object` `getExecutor​(Thread thread)` Obtains the executor, if any, used to create the provided thread.
`static JreCompat` `getInstance()`
`SocketAddress` `getUnixDomainSocketAddress​(String path)` Return Unix domain socket address for given path.
`static boolean` `isGraalAvailable()`
`static boolean` `isJre16Available()`
`static boolean` `isJre19Available()`
`ServerSocketChannel` `openUnixDomainServerSocketChannel()` Create server socket channel using the Unix domain socket ProtocolFamily.
`SocketChannel` `openUnixDomainSocketChannel()` Create socket channel using the Unix domain socket ProtocolFamily.

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

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

### Constructor Detail

#### JreCompat

    public JreCompat()

### Method Detail

#### getInstance

    public static JreCompat getInstance()

#### isGraalAvailable

    public static boolean isGraalAvailable()

#### isJre16Available

    public static boolean isJre16Available()

#### isJre19Available

    public static boolean isJre19Available()

#### getUnixDomainSocketAddress

    public SocketAddress getUnixDomainSocketAddress​(String path)

Return Unix domain socket address for given path.

Parameters:
  `path` - The path
Returns:
  the socket address

#### openUnixDomainServerSocketChannel

    public ServerSocketChannel openUnixDomainServerSocketChannel()

Create server socket channel using the Unix domain socket ProtocolFamily.

Returns:
  the server socket channel

#### openUnixDomainSocketChannel

    public SocketChannel openUnixDomainSocketChannel()

Create socket channel using the Unix domain socket ProtocolFamily.

Returns:
  the socket channel

#### getExecutor

    public 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