# J2EE web-container JNDI configuration

This page lists the JNDI environment entries that must be present in FX Corporate’s J2EE web container context.

FX Corporate’s deployment descriptor (`web.xml`) contains definitions for the full set of required JNDI entries. The environment values in the deployment descriptor are not suitable for production use, and you must override these values in the web container context as part of deploying FX Corporate.

## JNDI environment entries

If any of the JNDI environment entries below are missing from the J2EE web container’s context, then FX Corporate will raise an error.

* **CAPLIN.DEV.MODE**\
**Datatype:** `java.lang.String`, **Default:** `false`

  Set to true to allow a liberator host and port to be specified at run time in the query string of the web application URL like this: `?liberatorHost=lib3.example.com&liberatorPort=18081`

  **❗ IMPORTANT**\
  Do not enable CAPLIN.DEV.MODE in production environments.
* **CAPLIN.LOGIN.ENABLED**\
**Datatype:** `java.lang.String`, **Default:** `true`

  Enable FX Professional’s built-in login page.
* **CAPLIN.LOGOUT.REDIRECT**\
**Datatype:** `java.lang.String`, **Default:**

  The login page URL to redirect unauthenticated users to.
* **CAPLIN.LOGOUT**\
**Datatype:** `java.lang.String`, **Default:** `/logout`, **Since:** FX Corporate 1.54.0

  The URI of your logout endpoint.
* **CAPLIN.HELP.TRAININGLINK**\
**Datatype:** `java.lang.String`, **Default:** `/`, **Since:** FX Corporate 1.54.0

  The URL for the training hyperlink displayed in FX Corporate’s Help dialog.
* **CAPLIN.LOADBALANCE.ENABLED**\
**Datatype:** `java.lang.String`, **Default:** `false`

  When set to `false` (default), FX Corporate attempts to connect to the primary Liberator first. If the connection fails, FX Corporate attempts to connect to the secondary Liberator.

  When set to `true`, FX Corporate randomly chooses between the primary and secondary Liberators when attempting its first connection to the Caplin Platform. If the first connection fails, FX Corporate attempts to connect to the other Liberator.
* **LIBERATOR.DOMAIN**\
**Datatype:** `java.lang.String`, **Default:** `caplin.com`

  Domain on which the Liberator servers are deployed.
* **LIBERATOR.PRIMARY.ADDRESS**\
**Datatype:** `java.lang.String`, **Default:** `localhost`

  Fully-qualified hostname of the primary Liberator server.
* **LIBERATOR.PRIMARY.PORT**\
**Datatype:** `java.lang.String`, **Default:** `18080`

  Primary port of the primary Liberator server.
* **LIBERATOR.PRIMARY.HTTPS.PORT**\
**Datatype:** `java.lang.String`, **Default:** `18081`

  HTTPS port of the primary Liberator server.
* **LIBERATOR.SECONDARY.ADDRESS**\
**Datatype:** `java.lang.String`, **Default:** `localhost`

  Fully-qualified hostname of the secondary (failover) Liberator server.
* **LIBERATOR.SECONDARY.PORT**\
**Datatype:** `java.lang.String`, **Default:** `18080`

  Primary port of the secondary (failover) Liberator server.
* **LIBERATOR.SECONDARY.HTTPS.PORT**\
**Datatype:** `java.lang.String`, **Default:** `18081`

  HTTPS port of the secondary (failover) Liberator server.
* **KEYMASTER.LOCATION**\
**Datatype:** `java.lang.String`, **Default:** `servlet/StandardKeyMaster`

  The URL of the KeyMaster servlet. The URL can be absolute or relative.
* **SESSION.POLL.LOCATION**\
**Datatype:** `java.lang.String`, **Default:** `servlet/Poll`

  The URL of the KeyMaster poll servlet. The URL can be absolute or relative.
* **caplin.keymaster.privatekey.filename**\
**Datatype:** `java.lang.String`, **Default:** `/WEB-INF/cfg/keymaster/privatekey.pem`

  Name of the private key that the KeyMaster servlet uses to sign authentication tokens.

## Example configuration for Tomcat

This section shows `Environment` entries in an example or an FX Corporate web-application context in Apache Tomcat.

The `override` attribute of each `Environment` element is set to `false` to prevent the `value` attribute from being overridden by an equivalent environment entry in FX Corporate’s web application deployment descriptor (`web.xml`). For more information on the `override` attribute, see [The Context Container](https://tomcat.apache.org/tomcat-7.0-doc/config/context.html) on the Apache Tomcat website.

```xml
<Context>
  <Environment name="CAPLIN.DEV.MODE"
    value="false"
    type="java.lang.String"
    override="false" />
  <Environment name="CAPLIN.LOGIN.ENABLED"
    value="false"
    type="java.lang.String"
    override="false" />
  <Environment name="CAPLIN.LOGOUT.REDIRECT"
    value="/login"
    type="java.lang.String"
    override="false" />
  <Environment name="CAPLIN.LOGOUT"
    value="/logout"
    type="java.lang.String"
    override="false" />
  <Environment name="CAPLIN.HELP.TRAININGLINK"
    value="https://www.bank.com/training/"
    type="java.lang.String"
    override="false" />
  <Environment name="CAPLIN.LOADBALANCED.ENABLED"
    value="false"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.DOMAIN"
    value="bank.com"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.PRIMARY.ADDRESS"
    value="lib1.bank.com"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.PRIMARY.PORT"
    value="18080"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.PRIMARY.HTTPS.PORT"
    value="18081"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.SECONDARY.ADDRESS"
    value="lib2.bank.com"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.SECONDARY.PORT"
    value="18080"
    type="java.lang.String"
    override="false" />
  <Environment name="LIBERATOR.SECONDARY.HTTPS.PORT"
    value="18081"
    type="java.lang.String"
    override="false" />
  <Environment name="KEYMASTER.LOCATION"
    value="servlet/StandardKeyMaster"
    type="java.lang.String"
    override="false" />
  <Environment name="SESSION.POLL.LOCATION"
    value="servlet/Poll"
    type="java.lang.String"
    override="false" />
  <Environment name="caplin.keymaster.privatekey.filename"
    value="../../conf/keymaster/privatekey.pem"
    type="java.lang.String"
    override="false" />
</Context>
```
