Skip to content
Architecture > Configuration Guide

Center Properties

This document contains a list of configurable properties for the Center component and their uses.

For other components, please see these pages:

  • Common (properties applicable across all AMI applications)
  • Web (properties specific to the Web component)
  • Relay (properties specific to the Relay component)
  • WebBalancer and WebManager (properties for managing connections to 3forge Web)

General Center Properties

Note

Property default values that are prefixed with a # are optional or must be configured by the user before use.

To run the Center, you must include center in the list of components found in the the ami.components property in local.properties:

ami.components=center,web,relay

By default, all three components are running. To run just the Center component:

ami.components=center

Center Connection

Properties on configuring how connections can be made to the Center.

ami.center.port

Default:
ami.center.port=3270

Description:
  • Sets the port of the primary instance of the Center

ami.center.port.bindaddr

Default:
# ami.center.port.bindaddr=<network_interface>

Description:
  • Specifies the network interface that the ami.center.port server port will be bound to

ami.center.port.whitelist

Default:
# ami.center.port.whitelist=<options>

Description:
  • Provides either a list of permitted hostname patterns, or a plugin for blocking/granting access based on foreign network address
  • Options syntax:

    1. file: file:<file_containing_a_hostname_patterns_per_line\>
    2. text: text:<newline_delimited_list_of_hostname_patterns>
    3. plugin: plugin:<class_name_implementing_com.f1.ami.amicommon.AmiServerSocketEntitlementsPlugin\>

ami.center.ssl.port

Default:
# ami.center.ssl.port=<port>

Description:
  • Sets the secure port that the Center listens on

ami.center.ssl.keystore.file

Default:
# ami.center.ssl.keystore.file=/path/to/keystore/created/by/java/keytool

Description:
  • Path to the keystore file (using Oracle keytool)
  • Use with the ami.center.ssl.keystore.password property

ami.center.ssl.keystore.password

Default:
# ami.center.ssl.keystore.password=<password>

Description:
  • Password associated to the keystore file in ami.center.ssl.keystore.file

Developer and Session Options

Properties for Center session behavior and other developer options.

ami.resources.dir

Default:
ami.resources.dir=./resources

Description:
  • Path to directory where resources such as images and audio files are stored
  • Accessed via the Web in Dashboard -> Resource Manager

ami.resources.monitor.period.millis

Default:
ami.resources.monitor.period.millis=5000

Description:
  • How often the resources directory is scanned for new/updated files

idfountain.path

Default:
idfountain.path=data/idfountain

Description:
  • The path used by 3forge's persist engine for managing auto-incrementing IDs (amiid)

idfountain.batchsize

Default:
idfountain.batchsize=1000000

Description:
  • The number of IDs 3forge should generate per visit to the physical store
  • Larger numbers mean less frequent visits to the file system, but result in larger potential id-gaps on restart

ami.default.user.timezone

Default:
ami.default.user.timezone=EST5EDT

Description:
  • The default timezone of the Center
  • When users access the Center directly, this is the timezone that will be used

Note

This is different to the Web property ami.default.user.timeZone which affects the Web session. Please see this configuration guide for default user sessions in the Web.

ami.unknown.realtime.table.behavior

Default:
ami.unknown.realtime.table.behavior=CREATE_TABLE

Description:
  • Defines the behavior when real-time data is streamed into AMI but the target table doesn't exist
  • Allowed values:

    1. IGNORE: drop records and don't log anything
    2. LOG_ERROR: drop records and log a warning
    3. CREATE_TABLE: automatically create a new PUBLIC table with the correct columns corresponding to the record's fields and values

amiscript.db.variable.<VARNAME>

Default:
# amiscript.db.variable.<VARNAME>=<value>

Description:
  • Declare a readonly variable available in the Center database
  • Variables can be viewed using the SHOW VARS command
  • The value must be properly formatted to indicate the type, e.g:
    1. declare a string named hello: amiscript.db.variable.hello="world"
    2. declare a long named num: amiscript.db.variable.num=123L

Authentication

Properties to configure authentication and access to Center.

ami.db.auth.plugin.class

Default:
ami.db.auth.plugin.class=com.f1.ami.web.auth.AmiAuthenticatorFileBacked

Description:
  • Class name of custom authentication plugin if using
  • Default behavior uses the access.txt file
  • Custom entitlement authenticators must implement the com.f1.ami.web.auth.AmiAuthenticator interface. See how here

ami.jdbc.auth.plugin.class

Default:

ami.jdbc.auth.plugin.class=com.f1.ami.web.auth.AmiAuthenticatorFileBacked


Description:
  • Class name of custom authentication plugin if using
  • Default behavior uses the same method as ami.db.auth.plugin.class
  • Custom entitlement authenticators must implement the com.f1.ami.web.auth.AmiAuthenticator interface. See how here
  • Sets target database's JDBC endpoints

Datasources

Properties for configuring which datasources are loaded in AMI and accessing them.

ami.datasource.concurrent.queries.per.user

Default:
ami.datasource.concurrent.queries.per.user=5

Description:
  • Maximum number of queries to a specific datasource that can be invoked simultaneously

ami.datasource.plugins

Default:

ami.datasource.plugins=...
See the full list here:

Datasource adapter list
    com.f1.ami.plugins.mysql.AmiMysqlDatasourcePlugin,\
        com.f1.ami.center.ds.AmiKxDatasourcePlugin,\
        com.f1.ami.center.ds.AmiFlatFileDatasourcePlugin,\
        com.f1.ami.center.ds.AmiShellDatasourcePlugin,\
        com.f1.ami.center.ds.AmiAmiDbDatasourcePlugin,\
        com.f1.ami.center.ds.AmiGenericJdbcDatasourcePlugin,\
        com.f1.ami.plugins.postgresql.AmiPostgresqlDatasourcePlugin,\
        com.f1.ami.plugins.oracle.AmiOracleDatasourcePlugin,\
        com.f1.ami.plugins.excel.AmiExcelDatasourcePlugin,\
        com.f1.ami.plugins.db2.AmiDb2DatasourcePlugin,\
        com.f1.ami.plugins.ssh.AmiSshDatasourcePlugin,\
        com.f1.ami.plugins.ssh.AmiSftpDatasourcePlugin,\
        com.f1.ami.center.ds.AmiQuandlDatasourcePlugin,\
        com.f1.ami.center.ds.AmiFredDatasourcePlugin,\
        com.f1.ami.center.ds.AmiOneTickDatasourcePlugin,\
        com.f1.ami.plugins.restapi.AmiRestAPIDatasourcePlugin,\
        com.f1.ami.plugins.sqlite.AmiSqLiteDatasourcePlugin

Description:
  • Default datasource adapters are provided by 3forge and implement the AmiDatasourcePlugin interface
  • For custom adapters that we do not provide, see this documentation to write your own

ami.datasource.concurrent.queries.per.user

Default:
ami.datasource.concurrent.queries.per.user=5

Description:
  • Maximum number of queries to a specific datasource that can be invoked simultaneously

ami.datasource.concurrent.timeout.millis

Default:
ami.datasource.timeout.millis=60000

Description:
  • Time in milliseconds 3forge will wait for a datasource to respond to a query before timing out

Database General

Properties for configuring table and data storage in the AMI Center including file location and query performance.

ami.db.preschema.config.files

Default:
# ami.db.preschema.config.files=config/preschema.amisql

Description:
  • (Optional) Comma delimited list of .amisql files to execute on startup, before the managed schema
  • E.g: custom methods that require compilation before the managed schema is executed (the preschema)
  • Recommended file path: data/custom_methods.amisql

ami.db.schema.config.files

Default:
# ami.db.schema.config.files=config/schema.amisql

Description:
  • (Optional) Comma delimited list of .amisql files to execute on startup, read after the managed schema

ami.db.schema.managed.file

Default:
ami.db.schema.managed.file=data/managed_schema.amisql

Description:
  • File that contains the user-defined schema to execute on startup (public tables)
  • This file is updated when the user creates new public tables within 3forge via the shell tool
  • This is not the same as persisting the data

ami.db.table.default.refresh.period.millis

Default:
ami.db.table.default.refresh.period.millis=100

Description:
  • Max delay for refreshing changes to the front end
  • Corresponds to the RefreshPeriodMs setting when creating tables using persist engine

ami.db.max.stack.size

Default:
ami.db.max.stack.size=4

Description:
  • Max stack size for nesting triggers/procedure calls

ami.db.persist.dir

Default:
ami.db.persist.dir=persist

Description:

ami.db.persist.dir.system.tables

Default:
ami.db.persist.dir.system.tables=persist

Description:
  • Directory that the persisted system files are stored in

ami.db.persist.dir.system.tables.<__SYSTEM.TABLE.NAME>

Default:
# ami.db.persist.dir.system.table.<__SYSTEM.TABLE.NAME>=<path/to/dir>

Description:
  • Manually set the directory of where to store the persisted data of a given system table file
  • E.g: ami.db.persist.dir.system.table.__DATASOURCE=path/to/datasources

ami.db.persist.encrypter.system.tables

Default:
# ami.db.persist.encrypter.system.tables=default

Description:
  • For encrypting system tables using the 3forge provided encrypter
  • Must be set to default to use
  • The decrypter package must be included in your start.sh script
  • See the encryption documentation for more information

ami.db.persist.dir.system.tables.<__SYSTEM.TABLE.NAME>

Default:
# ami.db.persist.encrypter.system.table.<__SYSTEM.TABLE.NAME>=default

Description:
  • Manually set which system table file to encrypt
  • Include the decrypter package in your start.sh script
  • See the encryption documentation for more information

ami.db.write.lock.wait.millis

Default:
ami.db.write.lock.wait.millis=1000

Description:
  • How long to wait for write-lock before timing out

ami.db.anonymous.datasources.enabled

Default:
ami.db.anonymous.datasources.enabled=false

Description:
  • Whether to allow users to access undefined datasources

ami.center.snapshot.batchsize

Default:
ami.center.snapshot.batchsize=20000

Description:
  • How many rows get sent per batch from the Center when a Web (or other component) requests a snapshot

Historical Database Options

Properties for configuring AMI HDB, AMI's historical database. More information on HDB can be found on this page.

ami.hdb.root.dir

Default:
ami.hdb.root.dir=hdb

Description:
  • The directory where HDB tables are stored
  • Created when a historical data table is first created
  • For more information on historical tables and partitions, see here

ami.hdb.blocksize

Default:
ami.hdb.blocksize=8192

Description:
  • Size in bytes of data block for reading/writing to hdb directory

ami.hdb.filehandles.max

Default:
ami.hdb.filehandles.max=32

Description:
  • Maximum number of open file handles for the historical table
  • For more information on historical tables and partitions, see here

Database Console (For Telnet)

Users can connect to the Center's AMIDB directly via the console port to directly query the Center. These properties configure access to it.

ami.db.console.port

Default:
ami.db.console.port=3290

Description:
  • Port for connecting to AMIDB via telnet command line interface

ami.db.console.port.bindaddr

Default:
# ami.db.console.port.bindaddr=<network_interface>

Description:
  • Specifies network interface that the AMIDB console server port will be bound to

ami.db.console.port.whitelist

Default:
# ami.db.console.port.whitelist=<options>

Description:
  • Provide either a list of permitted hostname patterns, or a plugin for blocking/granting access based on foreign network address
  • Syntax:
    1. file: file:<file_containing_a_hostname_patterns_per_line\>
    2. text: text:<newline_delimited_list_of_hostname_patterns>
    3. plugin: plugin:<class_name_implementing_com.f1.ami.amicommon.AmiServerSocketEntitlementsPlugin\>

ami.db.console.prompt

Default:
# ami.db.console.prompt=

Description:
  • Custom string that is appended to customize the AMIDB console prompt

ami.db.console.history.dir

Default:
ami.db.console.history.dir=./history

Description:
  • Directory storing the command line history

ami.db.console.history.max.lines

Default:
ami.db.console.history.max.lines=10000

Description:
  • Maximum number of lines to store

ami.db.jdbc.port

Default:
ami.db.jdbc.port=3280

Description:
  • Port for connecting to 3forge via JDBC
  • -1 to disable

ami.db.jdbc.port.bindaddr

Default:
# ami.db.jdbc.port.bindaddr=<network_interface>

Description:
  • Specifies network interface that the JDBC server port will be bound to

ami.db.jdbc.ssl.port

Default:
ami.db.jdbc.ssl.port=-1

Description:
  • Port for connecting to 3forge via JDBC using a SSL connection (disabled by default)

ami.db.jdbc.ssl.port.bindaddr

Default:
# ami.db.jdbc.ssl.port.bindaddr=<network_interface>

Description:
  • Specifies network interface that the JDBC SSL server port will be bound to

ami.db.jdbc.ssl.keystore.file

Default:
# ami.db.jdbc.ssl.keystore.file=/path/to/keystore/created/by/java/keytool

Description:
  • Path to the JDBC keystore file (using Oracle keytool)
  • Use with ami.db.jdbc.ssl.keystore.password property

ami.db.jdbc.ssl.keystore.password

Default:
# ami.db.jdbc.ssl.keystore.password=<password>

Description:
  • Password associated to the JDBC keystore file

ami.db.jdbc.port.whitelist

Default:
# ami.db.jdbc.port.whitelist=<options>

Description:
  • Provide either a list of permitted hostname patterns, or a plugin for blocking/granting access based on foreign network address
  • Syntax:
    1. file: file:<file_containing_a_hostname_patterns_per_line\>
    2. text: text:<newline_delimited_list_of_hostname_patterns>
    3. plugin: plugin:<class_name_implementing_com.f1.ami.amicommon.AmiServerSocketEntitlementsPlugin\>

ami.db.jdbc.protocol.version

Default:
ami.db.jdbc.protocol.version=2

Description:
  • JDBC protocol version

Legacy

ami.center.relay.batch.messages.max

Default:
ami.center.relay.batch.messages.max=1000

Description:
  • Maximum number of messages processed in a single batch

ami.center.publish.changes.period.millis

Default:
ami.center.publish.changes.period.millis=500

Description:
  • Frequency of publishing changes

ami.center.log.stats.period.millis=15000

Default:
ami.center.publish.changes.period.millis=500

Description:
  • Frequency of statistics logging

ami.db.disable.functions

Default:
ami.db.disable.functions=strDecrypt

Description:
  • Comma delimited list of functions to disable

ami.db.default.permissions

Default:
ami.db.default.permissions=READ,WRITE,ALTER,EXECUTE

Description:
  • Comma delimited list of permissions for user with no AMIDB permissions configured for their account

ami.db.onstartup.ondisk.defrag

Default:
ami.db.onstartup.ondisk.defrag=true

Description:
  • Runs defragmentation on persisted table data if true, which will clear empty blocks

Center Object Plugins

There are a number of non-default Center objects that can be imported into AMI as external plugins. Users can write custom Center objects by implementing 3forge provided interfaces in Java.

There are 5 custom AMIDB objects, each with a dedicated Java interface:

Implementation instructions can be found by clicking on each respective object.

Center Object Properties

ami.db.trigger.plugins

Default:
ami.db.trigger.plugins=com.f1.ami.center.triggers.AmiTriggerFactory_Debug

Description:
  • A comma-delimited list of fully qualified class names of any Trigger plugins

ami.db.procedure.plugins

Default:
ami.db.procedure.plugins=ami.db.procedure.plugins=com.f1.ami.center.procs.AmiStoredProcFactory_Debug

Description:
  • A comma-delimited list of fully qualified class names of any Procedure plugins

ami.db.timer.plugins

Default:
ami.db.timer.plugins=com.f1.ami.center.timers.AmiTimerFactory_Debug

Description:
  • A comma-delimited list of fully qualified class names of any Timer plugins

ami.db.persister.plugins

Default:
# ami.db.persister.plugins=

Description:
  • A comma-delimited list of fully qualified class names of any custom Persistence Factory plugins

ami.db.dbo.plugins

Default:
# ami.db.dbo.plugins=

Description:
  • A comma-delimited list of fully qualified class names of any custom Center DBO plugins

Custom Classes

Any custom classes that should be available in AMIDB must be specified. Information on implementation can be found here.

ami.center.amiscript.custom.classes

Default:
# ami.center.amiscript.custom.classes=

Description:
  • A comma-delimited list of the fully qualified Java class name (package, Java class) of your custom class(es)