> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc.properties Configuration

> Reference guide for all supported configuration options in the CData Arc arc.properties file for the embedded Jetty web server.

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

This reference guide covers all supported configuration options in {siteName}'s `arc.properties` file. This file is used in the [embedded Jetty web server](./cross-platform-edition#configuring-the-embedded-jetty-server).

To add any of these options to your {siteNameShort} application, use a text editor to open the `arc.properties` file (located in the installation directory), then add the appropriate syntax. You can find examples of each option below.

<Tip>The following options are available in any {siteNameShort} `.properties` files you have in your implementation.</Tip>

## Using Variables

You can provide variables in the configuration options, but you must keep these considerations in mind:

* You can use variables for property *values*, but you cannot use them in property *names*.
* Variable names are case-sensitive.
* System properties take precedence over environment variables. If a variable is not found in the system property or the environment variable, it defaults to an empty string.
* Variables cannot be nested. For instance, `cdata.warPath=${cdata.prefix${cdata.arc}}/webapp` is not allowed.

The following example uses variables in configuration options to perform the following:

* Define the initialization parameters
* Set custom headers

```
cdata.initParameters=ARCCLOUD_SERVICE_DEFINITION_PATH:${cdata.home}/service.json,APP_LOGS:${cdata.logdb}
cdata.http.customHeaders=Product-Version:[${ARC_ISSUER} 2025];/api.rsc,Product-Issuer:${ARC_ISSUER}
```

## Configuration Options

### cdata.app.db

Defines the connection string to the backend database that is used by {siteNameShort}.

`cdata.app.db=jdbc:cdata:mysql:server=localhost;port=3306;database=mysql;user=MyUserName;password=MyPassword`

### cdata.app.directory

Defines the path that {siteNameShort} should use as its application directory.

`cdata.app.directory=/mnt/shared/arc`

### cdata.contextPath

Defines the base URL path at which a web application is deployed. It acts as a prefix for all the URLs handled by the web application.

`cdata.contextPath=/myapp`

For example, if the application is hosted at `www.mydomain.com`, this ensures the receiving endpoint is `http://www.mydomain.com/myapp/pub/Receive.rsb`.

### cdata.encryption.key

Specifies the path to an AES key file that contains a random character string, or a PFX (PKCS#12) certificate file, to use as the master key. The master key encrypts the encryption key that encrypts sensitive data such as passwords and secrets in {siteNameShort}. Only required if you want to use your own key or store the key in a non-default location.

`cdata.encryption.key=file:///var/opt/mykeys/mysecret.key`

Alternatively, if you are using an AES key, you can use the `APP_KEY` environment variable to supply the file path to the key file.

### cdata.encryption.key.password

Defines the password for a PFX file that is being used for the master key (set using [cdata.encryption.key](#cdata-encryption-key)).

`cdata.encryption.key.password=MyS3curePa55w0rd`

Alternatively, you can use an environment variable (for example, `ENCRYPTION_KEY_PASSWORD`) to store the password, and reference it here.

`cdata.encryption.key.password=${ENCRYPTION_KEY_PASSWORD}`

### cdata.fips.enabled

Boolean option that controls whether Federal Information Processing Standards (FIPS) mode is enabled. FIPS is a set of security standards developed by the United States federal government for use in computer systems to ensure security, interoperability, and data integrity.

`cdata.fips.enabled=true`

### cdata.http.customHeaders

Lets you provide custom headers as concatenated string key-value pairs in the following format: `key:value`.

When variables are included, the string is split at the first occurrence of a variable, and the variable is replaced. Only values can use variables.

`cdata.http.customHeaders=Product-Version:[${ARC_ISSUER} 2025];/api.rsc,Product-Issuer:${ARC_ISSUER}`

### cdata.http.gzipEnabled

Boolean option that controls whether GZIP compression is enabled for HTTP responses. When enabled, Jetty automatically compresses responses to reduce bandwidth usage, which improves performance for clients that support GZIP.

`cdata.http.gzipEnabled=true`

### cdata.http.host

Sets the host/IP address that Jetty's HTTP server should bind to. This determines which network interfaces the server listens on for incoming HTTP requests.

`cdata.http.host=192.168.0.27`

### cdata.http.maxFormSize

Defines the maximum allowed size (in bytes) for HTTP form submissions (such as application/x-www-form-urlencoded and multipart/form-data requests). It limits the amount of data that can be processed in form submissions, including file uploads via forms.

`cdata.http.maxFormSize=2000000`

### cdata.http.port

Sets the HTTP port that {siteNameShort} runs and listens on.

`cdata.http.port=4080`

### cdata.http.proxyMode

Boolean option that determines whether Jetty is running behind a reverse proxy or load balancer. When enabled, Jetty properly handles proxied requests, including headers like X-Forwarded-For and X-Forwarded-Proto.

* When `true`, Jetty trusts X-Forwarded-\* headers from the proxy.
* When `false`, Jetty ignores those headers and assumes direct client connections.

This ensures proper client IP detection, HTTPS redirection, and host resolution when running behind a proxy.

`cdata.http.proxyMode=true`

### cdata.http.timeout

Controls the idle timeout for HTTP connections. This setting determines how long Jetty waits (in milliseconds) for activity on a connection before closing it.

`cdata.http.timeout=60000`

### cdata.initParameters

Defines initialization parameters for the servlet. These parameters are concatenated string key-value pairs that are accessed by the servlet or filter at runtime. They must be set in a comma-delimited string in the following format: `key:value`.

When variables are included, the string is split at the first occurrence of a variable, and the variable is replaced. Only values can use variables.

`cdata.initParameters=ARCCLOUD_SERVICE_DEFINITION_PATH:${cdata.home}/service.json,APP_LOGS:${cdata.logdb}`

### cdata.loginService.ldap

This is interpreted as `cdata.loginService.ldap.*`. These properties are used to configure Lightweight Directory Access Protocol (LDAP) authentication in Jetty, which allows users to authenticate against an LDAP server. A number of properties are supported. At a minimum, the following are required when you use LDAP with the embedded Jetty server:

```
cdata.loginService.ldap.hostname
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.bindPassword
```

A complete LDAP section of `arc.properties` might look like the following:

```
;; LDAP
cdata.loginService.ldap.enabled=true
cdata.loginService.ldap.bindDn="CN=ldapuser,DC=example,DC=org"
cdata.loginService.ldap.hostname="127.0.0.1"
cdata.loginService.ldap.bindPassword="Adminpassword1"
cdata.loginService.ldap.port="1389"
cdata.loginService.ldap.debug=true
cdata.loginService.ldap.authenticationMethod="simple"
cdata.loginService.ldap.userBaseDn="DC=example,DC=org"
cdata.loginService.ldap.userRdnAttribute="cn"
cdata.loginService.ldap.userPasswordAttribute="userPassword"
cdata.loginService.ldap.forceBindingLogin="true"
cdata.loginService.ldap.roleBaseDn="DC=example,DC=org"
cdata.loginService.ldap.roleNameAttribute="cn"
cdata.loginService.ldap.roleMemberAttribute="member"
cdata.loginService.ldap.useLdaps="false"
```

See [Configuring LDAP Authentication](./cross-platform-edition#configuring-ldap-authentication) for additional context, and the full list of supported properties.

### cdata.loginService.ldap.enabled

Boolean that determines whether LDAP authentication is enabled in Jetty. This property is typically used to enable or disable the entire LDAP-based login service, based on your configuration needs.

`cdata.loginService.ldap.enabled=true`

### cdata.requestLog.enabled

Boolean that controls whether Jetty logs HTTP requests to an access log. When enabled, Jetty records details of incoming requests, such as client IP, request method, response status, and response time.

`cdata.requestLog.enabled=true`

### cdata.requestLog.filenameDateFormat

Specifies the date format pattern Jetty appends to log filenames when rotating logs. This helps organize logs by day, hour, or custom intervals.

* Used with `cdata.requestLog.filename` to generate rotating log filenames.
* The format follows Java's `SimpleDateFormat` pattern. The default is `yyyy_MM_dd`, which creates a new log file daily.
* If empty (`""`), Jetty disables date-based rotation.

`cdata.requestLog.filenameDateFormat=MM_dd_yyyy`

### cdata.requestLog.retainDays

Specifies how many days Jetty keeps old access logs before automatically deleting them.

* The default is `31`, which means Jetty keeps logs for 31 days before deleting them.
* When set to `0`, Jetty disables log retention, which means logs are never deleted automatically.
* Used with `cdata.requestLog.filenameDateFormat` to manage rotating log files.

`cdata.requestLog.retainDays=90`

### cdata.session.timeout

Defines the maximum duration of inactivity (in seconds) before a user's session expires in a Jetty web server.

* The default is `600` seconds (10 mins).
* Values less than or equal to `0` are ignored.

`cdata.session.timeout=1200`

### cdata.tempDirectory

Defines the location of the temp directory used by the application.

`cdata.tempDirectory=/tmp/arc`

### cdata.tls.keyStoreType

Specifies the type of keystore Jetty should use for TLS/SSL certificates. A keystore contains the private key and SSL certificate necessary for Jetty to establish secure HTTPS connections.

Common types include JKS, PKCS12, BKS and PEM.

`cdata.tls.keyStoreType=PEM`

### cdata.tls.keyStorePassword

Defines the password for the specified keystore.

`cdata.tls.keyStorePassword=Password123`

### cdata.tls.keyStorePath

Specifies the file path to the keystore that Jetty should use for TLS/SSL encryption.

`cdata.tls.keyStorePath=/pathto/mykeystore.jks`

### cdata.tls.port

Specifies the port number that Jetty uses for TLS (HTTPS) connections. This is the secure alternative to `cdata.http.port`, which is used for plain HTTP traffic.

`cdata.tls.port=443`

### cdata.tls.sniHostCheck

Boolean that controls whether Jetty enforces hostname verification during Server Name Indication (SNI) processing in TLS/SSL connections.

`cdata.tls.sniHostCheck=true`

### cdata.warPath

Sets the path of the `arc.war` file, if it is located elsewhere.

`cdata.warPath=${cdata.home}/webapp/arc.war`
