Unlike the Classic AppServer, which has a separate environment variable configuration per ABL application, the PAS for OpenEdge server architecture has environment variable controls for the server instance, which means the ABL application when only one (1) ABL application is deployed (for more information, see KB #173870). Instead, it relies on the execution of batch or bash scripts to set the environment variables as you would do elsewhere for the OS. By default, the CATALINA_BASE/bin/ directory contains an openedge_setenv.[bat|sh] file for the respective OS (Windows or Unix/Linux).

When deploying multiple ABL applications (i.e. multiple classic AppServer brokers) in PAS for OpenEdge, you should look to migrate away from using environment variables to using an application properties file. Process environment variables represent a vulnerability and values should only be used after a comprehensive validation process.

It is not advisable to alter the existing openedge_setenv file as it may be replaced or altered during a future upgrade of the PAS for OpenEdge instance. Instead, you can create any number of new files which match the pattern *_setenv.[bat|sh] and they are automatically executed at startup of the Tomcat container.

openedge_setenv

The only notable exception to the above recommendation of not editing this file is if you need to enable Enhanced Mapped Diagnostic Context (MDC) logging to report the RequestID for each request to the PAS for OpenEdge instance. Enhanced MDC logging is enabled by default, so no changes must be made to enable it. However, a variable named ENHLOGGINGOPTS is set to ED by default, which enables the [E]nhanced log format and uses a [D]ate format of ISO-8601. The order of these values does not matter, but their case does: the lowercase values of e uses AVM common format for logging while d uses the AVM date/time format. For more information, see Configure MDC access for header requests.

For reference, the default file sets a _oeopts variable which contains direct options for Tomcat itself at startup. These flow into the standard JAVA_OPTS. If there is an unavoidable need to alter these for Tomcat, then this location is acceptable for modifying those values. Do not edit openedge_setenv for controlling JAVA_OPTS or CATALINA_OPTS.

Custom _setenv

Custom _setenv files are the recommended way to control the process environment before the Tomcat server’s Java process starts. Alternatively, you may also define custom environment settings in the user account used to start the Tomcat server.

Any valid .bat or .sh file with a basename ending in _setenv is considered for execution at startup, allowing you to set environment variables at the appropriate time during the Tomcat lifecycle. For example, a file timezone_setenv.[bat|sh] could be added to a PAS for OpenEdge instance to configure a distinct timezone for the instance, which is an example of purposed naming.

At present, all environment variables are set globally for the instance though it may be a good practice to name your custom files for each ABL application (or in a common_setenv if purposed naming does not make sense). This setting prepares your ABL applications for a potential future feature which should support setting of environment variables per ABL application.