# Class AprLifecycleListener

java.lang.Object
org.apache.catalina.core.AprLifecycleListener

All Implemented Interfaces:
  `LifecycleListener`

public class AprLifecycleListener extends Object implements LifecycleListener
Implementation of `LifecycleListener` that will init and destroy APR.

This listener must only be nested within `Server` elements.

Only one instance of the APR/Native library may be loaded per JVM. Loading multiple instances will trigger a JVM crash - typically when the Connectors are destroyed. This listener utilises reference counting to ensure that only one instance of the APR/Native library is loaded at any one time.

If multiple listener configurations are found, only the first one initialised will be used.

Since:
  4.1

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static String`
`FIPSMode`
FIPS mode configuration.
`protected static boolean`
`fipsModeActive`
Indicates whether FIPS mode is currently active.
`protected static final Object`
`lock`
`protected static final StringManager`
`sm`
The string manager for this package.
`protected static String`
`SSLEngine`
SSL engine configuration.
`protected static boolean`
`sslInitialized`
Indicates whether SSL has been initialized.
`protected static String`
`SSLRandomSeed`
SSL random seed source.
`protected static final int`
`TCN_RECOMMENDED_MAJOR`
`protected static final int`
`TCN_RECOMMENDED_MINOR`
`protected static final int`
`TCN_RECOMMENDED_PV`
`protected static final int`
`TCN_REQUIRED_MAJOR`
`protected static final int`
`TCN_REQUIRED_MINOR`
`protected static final int`
`TCN_REQUIRED_PATCH`

## Constructor Summary

Constructors
Constructor
Description
`AprLifecycleListener()`
Constructs a new AprLifecycleListener.

## Method Summary

Modifier and Type
Method
Description
`String`
`getFIPSMode()`
Returns the FIPS mode configuration.
`static String`
`getInstalledAprVersion()`
Get the installed APR version string, if available.
`static String`
`getInstalledOpenSslVersion()`
Get the installed OpenSSL version string (via APR), if available.
`static String`
`getInstalledTcnVersion()`
Get the installed Tomcat Native version string, if available.
`String`
`getSSLEngine()`
Returns the SSL engine configuration.
`String`
`getSSLRandomSeed()`
Returns the SSL random seed source.
`static String`
`getTcnVersionWarning()`
Get a warning message if the installed Tomcat Native version is older than recommended.
`static boolean`
`getUseAprConnector()`
`static boolean`
`getUseOpenSSL()`
Returns whether OpenSSL is in use.
`static boolean`
`isAprAvailable()`
Checks APR availability, initializing if necessary.
`boolean`
`isFIPSModeActive()`
Returns whether FIPS mode is currently active.
`static boolean`
`isInstanceCreated()`
Returns whether an APR instance has been created.
`void`
`lifecycleEvent(LifecycleEvent event)`
Primary entry point for startup and shutdown events.
`void`
`setFIPSMode(String FIPSMode)`
Sets the FIPS mode configuration.
`void`
`setSSLEngine(String SSLEngine)`
Sets the SSL engine configuration.
`void`
`setSSLRandomSeed(String SSLRandomSeed)`
Sets the SSL random seed source.
`void`
`setUseAprConnector(boolean useAprConnector)`
`void`
`setUseOpenSSL(boolean useOpenSSL)`
Configures whether to use OpenSSL.

### Methods inherited from class Object

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

## Field Details

### sm

protected static final StringManager sm
The string manager for this package.

### TCN_REQUIRED_MAJOR

protected static final int TCN_REQUIRED_MAJOR

See Also:
  - Constant Field Values

### TCN_REQUIRED_MINOR

protected static final int TCN_REQUIRED_MINOR

See Also:
  - Constant Field Values

### TCN_REQUIRED_PATCH

protected static final int TCN_REQUIRED_PATCH

See Also:
  - Constant Field Values

### TCN_RECOMMENDED_MAJOR

protected static final int TCN_RECOMMENDED_MAJOR

See Also:
  - Constant Field Values

### TCN_RECOMMENDED_MINOR

protected static final int TCN_RECOMMENDED_MINOR

See Also:
  - Constant Field Values

### TCN_RECOMMENDED_PV

protected static final int TCN_RECOMMENDED_PV

See Also:
  - Constant Field Values

### SSLEngine

protected static String SSLEngine
SSL engine configuration.

### FIPSMode

protected static String FIPSMode
FIPS mode configuration.

### SSLRandomSeed

protected static String SSLRandomSeed
SSL random seed source.

### sslInitialized

protected static boolean sslInitialized
Indicates whether SSL has been initialized.

### fipsModeActive

protected static boolean fipsModeActive
Indicates whether FIPS mode is currently active.

### lock

protected static final Object lock

## Constructor Details

### AprLifecycleListener

public AprLifecycleListener()
Constructs a new AprLifecycleListener.

## Method Details

### isAprAvailable

public static boolean isAprAvailable()
Checks APR availability, initializing if necessary.

Returns:
  `true` if APR is available

### getInstalledTcnVersion

public static String getInstalledTcnVersion()
Get the installed Tomcat Native version string, if available.

Returns:
  the version string, or null if APR is not available

### getInstalledAprVersion

public static String getInstalledAprVersion()
Get the installed APR version string, if available.

Returns:
  the APR version string, or null if APR is not available

### getInstalledOpenSslVersion

public static String getInstalledOpenSslVersion()
Get the installed OpenSSL version string (via APR), if available.

Returns:
  the OpenSSL version string, or null if not available

### getTcnVersionWarning

public static String getTcnVersionWarning()
Get a warning message if the installed Tomcat Native version is older than recommended. This performs the same version check used during Tomcat startup.

Returns:
  a warning message if the installed version is outdated, or null if the version is acceptable or APR is not available

### lifecycleEvent

public void lifecycleEvent(LifecycleEvent event)
Primary entry point for startup and shutdown events.

Specified by:
  `lifecycleEvent` in interface `LifecycleListener`
Parameters:
  `event` - The event that has occurred

### getSSLEngine

public String getSSLEngine()
Returns the SSL engine configuration.

Returns:
  the SSL engine configuration

### setSSLEngine

public void setSSLEngine(String SSLEngine)
Sets the SSL engine configuration.

Parameters:
  `SSLEngine` - the SSL engine configuration

### getSSLRandomSeed

public String getSSLRandomSeed()
Returns the SSL random seed source.

Returns:
  the SSL random seed source

### setSSLRandomSeed

public void setSSLRandomSeed(String SSLRandomSeed)
Sets the SSL random seed source.

Parameters:
  `SSLRandomSeed` - the SSL random seed source

### getFIPSMode

public String getFIPSMode()
Returns the FIPS mode configuration.

Returns:
  the FIPS mode configuration

### setFIPSMode

public void setFIPSMode(String FIPSMode)
Sets the FIPS mode configuration.

Parameters:
  `FIPSMode` - the FIPS mode configuration

### isFIPSModeActive

public boolean isFIPSModeActive()
Returns whether FIPS mode is currently active.

Returns:
  `true` if FIPS mode is active

### setUseAprConnector

public void setUseAprConnector(boolean useAprConnector)

### getUseAprConnector

public static boolean getUseAprConnector()

### setUseOpenSSL

public void setUseOpenSSL(boolean useOpenSSL)
Configures whether to use OpenSSL.

Parameters:
  `useOpenSSL` - `true` to use OpenSSL

### getUseOpenSSL

public static boolean getUseOpenSSL()
Returns whether OpenSSL is in use.

Returns:
  `true` if OpenSSL is in use

### isInstanceCreated

public static boolean isInstanceCreated()
Returns whether an APR instance has been created.

Returns:
  `true` if an APR instance has been created