AlgoTraderAlgoTrader Documentation

Chapter 30. Processes and Networking

30.1. Processes
30.2. Sockets
30.3. RMI
30.4. REST over HTTP/S
30.5. Transport security

The following Services and Process are used by the system:

If the AlgoTrader Server and the strategies are running within separate processes, individual strategies can be stopped / altered / restarted independent of each other and the AlgoTrader Server.

The system defines an RMI services through Spring Remoting (RMI Registry 1199): RmiServiceExporter (defined in applicationContext-export-remoteServices.xml)

HTTP/S transport is powered by embedded Jetty HTTP server and REST endpoints are managed by Spring Web framework.

RESTful endpoints are defined by Spring annotation meta data and are automatically discovered upon system startup. One can extend platform capabilities by adding custom Spring Web controllers to the Spring application context.

By default AlgoTrader is assumed to be running within a secure network segment wherein user authentication and authorization as well transport security are enforced by the runtime environment / operating system. The AlgoTrader process, individual strategy process and browsers running the HTML5 front-end exchange data unencrypted primarily to avoid overhead of encryption for maximal performance.

Transport security can be activated through configuration parameters in

# TLS/SSL transport security
security.ssl = true

By default AlgoTrader ships with a self-signed certificate. It is strongly recommended to procure a certificate from a major CA (certification authority) trusted by common browsers. As an alternative one can import the self-signed certificate shipped with AlgoTrader into the browser. However this approach is strongly discouraged for productive use.

To use SSL transport security please update the following configuration parameters in

# Keystore with SSL key
ssl.keystore = classpath://identity.jks

# Keystore type (JKS will be assumed by default)
ssl.keystoreType =

# Keystore password
ssl.keystorePassword = password

# Private key password
ssl.keyPassword = password

When running with TLS transport security turned on AlgoTrader also enforces BASIC user authentication with a user name and a password when logging into the HTML5 front-end. User credentials can be provided in

# Web UI user name
jetty.user = myusername

# Web UI password
jetty.password = secret