Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This section describes how to configure FIX Engine and FIX session.

Table of Contents
maxLevel4

Configuring FIX Engine

The FIX Engine is based on the the FIX Antenna Java library. 

FIX Engine's basic settings are stored in the fixenginethe fixengine.properties file, located in the conf the conf directory. Refer to the B2BITS FIX Antenna Java Programmer’s Guide for a complete list of FIX Antenna settings.

The fixengineThe fixengine.properties file contains global B2BITS FIX Antenna settings. A user can specify FIX session default parameters here as well. 

The fixedgeThe fixedge.properties file contains settings of the default FIX server port by which the FIX Antenna listens to incoming data.

The currently used default: server.port=8911.

Additional listening ports could be defined within FIX session configurations (see the port property). In this case, the FIX Engine automatically manages their opening and closing according to started sessions.

...

The custom FIX dictionaries setup in the FIXEdge Java (FEJ) product is based on the FIX Antenna custom FIX dictionaries setup (see see How to set up custom FIX dictionaries), but there is FIXEdge Java configuration specific.

...

  1. Place the customFIXVersions section into the defaultfixengine.properties file located in the confdirectory to set up custom FIX version info for all FIX sessions.

    Code Block
    languageyml
    titlefixengine.properties
    # comma-separated list of custom FIX dictionary aliases
    customFixVersions=FIX44Custom,FIX50Custom
    
    # pair of 'fixVersion' and 'fileName' for each FIX dictionary alias with the pattern:
    # customFixVersion.<custom FIX version alias>.fixVersion=<base standard FIX version>
    # customFixVersion.<custom FIX version alias>.fileName=<custom FIX dictionary file name>
    
    # example of custom FIX dictionary based on FIX.4.4
    customFixVersion.FIX44Custom.fixVersion=FIX.4.4
    customFixVersion.FIX44Custom.fileName=classpath:fixdic44-custom.xml
    
    # examples of custom FIX dictionary based on FIX.5.0
    customFixVersion.FIX50Custom.fixVersion=FIX.5.0
    customFixVersion.FIX50Custom.fileName=classpath:fixdic50-custom.xml
    
    



  2. Set the defined dictionary aliases as session's fixVersion or appVersion in the appropriate FIXEdge Java session configuration file 's_fix_[SESSION_ID].properties':

    Code Block
    languageyml
    titles_fix_session1.properties
    # FIXEdge Java session configuration properties
    
    fixVersion=FIX44Custom
    
    Code Block
    languageyml
    titles_fix_session2.properties
    # FIXEdge Java session configuration properties
    
    fixVersion=FIX50Custom
    
    NOTE: Changes, which are made in 


    the fixengine.properties file will be

    The value of the default custom version is specified in the DefaultCstmApplVerID <1408> field of the Logon message. Its value is configured in the s_fix_[SESSION_ID].properties file via the appVersion property - the first custom version in the list will be considered the default one and its value will be set for the DefaultCstmApplVerID <1408> field of the Logon message.

    Info

    Please be aware that the value of the default custom version of the FIX protocol should meet the counterparty's requirements. Otherwise, the Logout message will be received and the session connection process will be terminated. 

Info

Changes, which are made in the fixengine.properties file will be applied only after the FIXEdge Java server restart.

Configuring FIX Session

For establishing and managing FIX sessions, the FIX Antenna Java library is used. FEJ also introduces a per-file base configuration for each FIX session. All such configuration files are placed into subdirectories of the conf/session directory and should follow the s_fix_[SESSION_ID].properties mask (this behavior can be changed with the sessionConfigManager bean into sysconf/fej-server.xml). Additionally, each subdirectory may have the s_fixDefault.properties configuration file which defines a common option for all groups of the FIX session.

...

  • Restart the FIXEdge Java server by using the administrative instruments (all sessions will be initialized in this case)
  • Load or reload the session configuration from the FIXICC app (refer to the FIXICC & FEJ Integration User Guide)

NOTE: Changes, which are made in fixengine.properties will be applied to the FIX Engine and sessions only after the FIXEdge server restart.

For monitoring available sessions and their states, use the administrative tools (SSH, JMX), or FIXICC.

FIX session configuration options

...

Property nameDefault valueRequired for session initiatorRequired for session acceptorDescription

sessionType

acceptor

YesYes

Session type. If the type is not defined, then the session will be resolved as an acceptor.

Valid values: acceptor/initiator.

host


Yes

The connecting host for the initiator session

port


YesYes, if SSL is enabled

The connecting port for the initiator session or listening port for the acceptor session.

If the port property is defined for the acceptor, the FIXEdge server tries to open this port during the acceptor session start and close during its stop. The FIXEdge server accepts such a session only on the defined port.

The same port may be defined for several acceptor sessions. All of these sessions should contain the same value for the 'enableSSL' property.

senderCompID


YesYes

The assigned value is used to identify a firm that sends the message

senderSubID




The assigned value is used to identify a specific message originator (desk, trader, etc.)

senderLocationID




The assigned value is used to identify a specific message originator’s location (i.e. geographic location and/or desk, trader)

targetCompID


YesYes

The assigned value used to identify a receiving firm

targetSubID




The assigned value is used to identify a specific individual or a unit intended to receive the message

targetLocationID




The assigned value is used to identify a specific message destination’s location (i.e. geographic location and/or desk, trader)

fixVersion


YesYes

A version of the FIX protocol, a version of the transport protocol in case of FIX 5.0-FIXLatest (FIXT1.1), or a custom version (see How to set up custom FIX dictionaries)

Valid values: FIX.4.0, FIX.4.1, FIX.4.2, FIX.4.3, FIX.4.4, FIXT.1.1.

appVersion




A version of the application-level protocol or a custom version (see How to set up custom FIX dictionaries)

Valid values: FIX.4.0, FIX.4.1, FIX.4.2, FIX.4.3, FIX.4.4, FIX.5.0, FIX.5.0SP1, FIX.5.0SP2, FIXLatest

Info

The FIXLatest application version is available since FIXEdge Java 1.10.3 release.

backupHost




Backup host for initiator session

backupPort




Backup port for initiator session

incomingSequenceNumber

0



An initial incoming sequence number

outgoingSequenceNumber

0



An initial outgoing sequence number

heartbeatInterval

30



Heartbeat interval (in seconds)

fixFieldList




User-defined fields for messages. If this list is not empty, the Engine adds it to each outgoing message.

outgoingLoginFixFieldList




Additional fields for the outgoing Logon message

groups




A comma-separated list of routing groups

username




The assigned value is used to identify a username to send in the Logon message for the initiator session and a username to validate with the user name from the Logon request for a session acceptor. The session will be accepted if the username is not defined.

password




The assigned value is used to identify a password to send in the Logon message for the session initiator and the password to validate
with the password from the Logon request for the session acceptor. The session will be accepted if the password is not defined.

disposeOnDisconnect

false

Disposes the FIX session when another side breaks the connection or in case of disconnection. More details about session statuses can be found in the FIX Antenna Java documentation.

NOTE: If the property is set to true, then the reconnect logic will be suppressed.

startOnload

falseYesYesWhether a FIX session should be started during FIXEdge Java server initialization.

startTime


YesYesA cron expression that defines a FIX session start time

stopTime


YesYesA cron expression that defines a FIX session stop time

scheduleTimeZone


YesYesA time zone for the start and stop times

resetSequenceOnSchedule

falseYesYesWhether sequences of a FIX session should be reset at the moment, defined by the startTime expression.

...

Default session settings can be configured in the s_fixDefault.properties file (see details here) located in the same directory as the s_fix<session id>.properties session configuration file.

...

PropertyDefault value Description

enableSSL

falseEnable secure transport for the session

keyStorePath


Path to a KeyStore, which contains private keys for a secure connection.

One key is to be set per port.

keyStorePassword


KeyStore password

trustStorePath


Path to a TrustStore. Usually contains a chain of trusted certificates.

trustStorePassword


TrustStore password

sslKeystoreType

JKSThe type of a KeyStore.
See the KeyStore section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard types.
Examples of value: JKS, JCEKS, PKCS12, PKCS11

sslTruststoreType

JKSThe type of a TrustStore.
See the KeyStore section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard types.
Examples of value: JKS, JCEKS, PKCS12, PKCS11

sslKeystoreKeyAlias


Alias filter for used entities in a KeyStore. The only keys with defined alias will be used for a secure connection if this property is defined.

sslTruststoreKeyAlias


Alias filter for used entities in a TrustStore. The only certificates with defined alias will be used for a secure connection if this property is defined.

sslProtocol

TLSv1.2

Preferred SSL protocol.
For the initiator side, it's a protocol, which is used for handshake initialization (but the server may propose another protocol for connection).
For an acceptor side, it defined a family of possible protocols. See the SSLContext section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard protocol names.
To define certain protocol(s) for communication, please use the acceptedSslServerProtocols option.

acceptedSslServerProtocols


Accepted SSL protocols for connection to the server.
This option is used to restrict the SSL protocols to which the initiator can connect.
Value type: comma-separated string
Examples of value: "TLSv1.2", "TLSv1.1, TLSv1.2"

acceptedSslCipherSuites


Accepted SSL cipher suites for connection to the server.
Value type: comma-separated string.
Examples of value: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, ..."

keyManagerAlgorithm

SunX509Key manager factory algorithm name (see Customizing the Default Key Managers and Trust Managers). Possible values are SunX509, and PKIX.

keyManagerProvider


Key manager provider. Used to get the KeyManagerFactory instance.
Note that the list of registered providers may be retrieved via the Security.getProviders() method.

trustManagerAlgorithm

SunX509Trust manager factory algorithm name (see Customizing the Default Key Managers and Trust Managers). Possible values are SunX509, and PKIX.

sslServerNeedClientAuth

falseDefine if authentication is required for the server-side socket. This option is working only for the acceptor sessions.

...