Overview
FIX Edge Java is an application server providing FIX connectivity to multiple clients. Client applications communicate with FEJ through one of the multiple transport protocols (e.g. Simple Sockets, TIBCO, CORBA, HTTPs) employing transport adaptors. It is designed to be as easy as possible to install, configure, administrate and monitor trading information flows. It is written in Java and has a performance profile suitable for the needs of all clients up to and including large sell-side institutions and large volume traders.
System Requirements
To get started, make sure your system has Java JDK 8.
$ java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
Installation
To get started, you need to download the FEJ distribution. You should end up downloading a compressed ZIP file named something like fixedgej-1.0.0.zip. Once you have downloaded the FEJ zipball, installing and setting up a standalone FEJ node is pretty simple and straightforward. Let’s extract the compressed zip archive into /usr/share
. On Linux, Mac OS X, or any other UNIX-like system you can use the following command to extract the distribution:
$ unzip fixedgej-1.0.0.zip -d /usr/share $ cd /usr/share/fixedgej-1.0.0/ $ ls CDDL-license.txt apache-license-2.0.txt bin icons license.txt scripts tmp wrapperApp.jar FixEdgeJavaVersionHistory.txt bat conf lib log templates wrapper.jar
If you are using Windows, you will need to use a decompression tool such as WinZip to extract the distribution.
In the distribution directory, you will find a bin
directory that contains the scripts needed to start FEJ on UNIX platforms (Linux, Mac OS X, etc.) and a `bat' directory that contains the scripts for Windows. The conf directory holds configuration files. The lib directory contains Java JAR files, which are third-party files needed to run FEJ.
Once we have extracted the zipball, the next thing is to configure and start FEJ.
Starting the FEJ container on Windows (Unix)
Now, let’s go ahead and start FEJ. All FEJ administration scripts to start/stop the container for Windows are shipped along with the archive in the bat
folder with the following content (Unix: similar in the bin
folder):
$ pwd /usr/share/fixedgej-1.0.0/bat $ ls installService.bat runConsoleW.bat setenv.bat systemTrayIcon.bat wrapper.bat queryService.bat runServicesManagerClient.bat startService.bat sytemTrayIconW.bat wrapperW.bat runConsole.bat runServicesManagerServer.bat stopService.bat uninstallService.bat
To start FEJ as a console application on the Windows system, you need to execute the runConsole.bat
(unix: ./runConsole.sh
):
$ ./runConsole.bat
To avoid going to the FEJ install directory to run these scripts, you can include it in your PATH variable as follows:
$ export PATH=$PATH:/usr/share/fixedgej-1.0.0/bat
To start FEJ as a Windows service you first need to install it. To install the application as a service execute installService.bat
(unix: ./installDaemon.sh
).
You need to have administrative privileges to run these script.
A successful installation of the container will show the following output:
$ ./installService.bat C:\cygwin64\usr\share\fixedgej-1.0.0\bat>cd C:\cygwin64\usr\share\fixedgej-1.0.0\bat\ C:\cygwin64\usr\share\fixedgej-1.0.0\bat>call setenv.bat "java" -Xmx30m -Djna_tmpdir="C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../tmp" -Djava.net.preferIPv4Stack=true -jar "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../wrapper.jar" -i "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../conf/wrapper.conf" YAJSW: yajsw-alpha-12.00 OS : Windows 7/6.1/amd64 JVM : Oracle Corporation/1.8.0_60/D:\Program Files\Java\jre1.8.0_60/64 Oct 13, 2015 11:59:16 AM org.apache.commons.vfs2.VfsLog info INFO: Using "C:\cygwin64\tmp\vfs_cache" as temporary files store. ************* INSTALLING FixEdgeJava *********************** . <some omitted output> . Service FixEdgeJava installed Press any key to continue . . .
Service installation completes successfully.
We are now ready to start the service. Run the startService.bat
(unix: ./startDaemon.sh
):
$ ./startService.bat C:\cygwin64\usr\share\fixedgej-1.0.0\bat>cd C:\cygwin64\usr\share\fixedgej-1.0.0\bat\ C:\cygwin64\usr\share\fixedgej-1.0.0\bat>call setenv.bat "java" -Xmx30m -Djna_tmpdir="C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../tmp" -Djava.net.preferIPv4Stack=true -jar "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../wrapper.jar" -t "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../conf/wrapper.conf" YAJSW: yajsw-alpha-12.00 OS : Windows 7/6.1/amd64 JVM : Oracle Corporation/1.8.0_60/D:\Program Files\Java\jre1.8.0_60/64 Oct 13, 2015 12:10:33 PM org.apache.commons.vfs2.VfsLog info INFO: Using "C:\cygwin64\tmp\vfs_cache" as temporary files store. ************* STARTING FixEdgeJava *********************** Service FixEdgeJava started Press any key to continue . . .
Service starts successfully.
To stop the service, you can use stopService.bat
script (unix: ./stopDaemon.sh
):
$ ./stopService.bat C:\cygwin64\usr\share\fixedgej-1.0.0\bat>cd C:\cygwin64\usr\share\fixedgej-1.0.0\bat\ C:\cygwin64\usr\share\fixedgej-1.0.0\bat>call setenv.bat "java" -Xmx30m -Djna_tmpdir="C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../tmp" -Djava.net.preferIPv4Stack=true -jar "C:\cygwin64\usr\share\fixedgej- 1.0.0\bat\/../wrapper.jar" -p "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../conf/wrapper.conf" YAJSW: yajsw-alpha-12.00 OS : Windows 7/6.1/amd64 JVM : Oracle Corporation/1.8.0_60/D:\Program Files\Java\jre1.8.0_60/64 Oct 13, 2015 12:13:36 PM org.apache.commons.vfs2.VfsLog info INFO: Using "C:\cygwin64\tmp\vfs_cache" as temporary files store. ************* STOPPING FixEdgeJava *********************** Service FixEdgeJava stopped Press any key to continue . . .
Service stopped successfully.
Finally, if you want to uninstall the service run uninstallService.bat
(unix: ./uninstallDaemon.sh
):
$ ./uninstallService.bat C:\cygwin64\usr\share\fixedgej-1.0.0\bat>cd C:\cygwin64\usr\share\fixedgej-1.0.0\bat\ C:\cygwin64\usr\share\fixedgej-1.0.0\bat>call setenv.bat "java" -Xmx30m -Djna_tmpdir="C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../tmp" -Djava.net.preferIPv4Stack=true -jar "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../wrapper.jar" -r "C:\cygwin64\usr\share\fixedgej-1.0.0\bat\/../conf/wrapper.conf" YAJSW: yajsw-alpha-12.00 OS : Windows 7/6.1/amd64 JVM : Oracle Corporation/1.8.0_60/D:\Program Files\Java\jre1.8.0_60/64 Oct 13, 2015 12:15:39 PM org.apache.commons.vfs2.VfsLog info INFO: Using "C:\cygwin64\tmp\vfs_cache" as temporary files store. ************* REMOVING FixEdgeJava *********************** Service FixEdgeJava removed Press any key to continue . . .
Service was removed successfully.
Configuration
This section will acquaint you with the basic information used during the configuration of the application.
All of the information in the configuration files is read at startup, meaning that any change to the files necessitates a restart of the application.
The conf folder holds the configuration files for FEJ.
C:\usr\share\fixedgej\conf>ls -la total 39 drwxr-xr-x 1 root root 8192 Apr 4 15:30 . drwxr-xr-x 1 root root 4096 Apr 4 15:25 .. -rw-r--r-- 1 root root 3280 Mar 24 14:20 cluster.xml (1) -rw-r--r-- 1 root root 1462 Mar 24 14:20 fej-context.xml (2) -rw-r--r-- 1 root root 1273 Mar 24 14:20 fej-jms.xml (3) -rw-r--r-- 1 root root 2562 Mar 24 14:20 fej-monitoring.xml (4) -rw-r--r-- 1 root root 2745 Mar 24 14:20 fej-replication.xml (5) -rw-r--r-- 1 root root 2837 Apr 3 20:36 fej-routing.xml (6) -rw-r--r-- 1 root root 1655 Mar 24 14:20 fej-scheduling.xml (7) -rw-r--r-- 1 root root 2502 Mar 24 14:20 fej-security.xml (8) -rw-r--r-- 1 root root 1764 Mar 24 14:20 fej-server.xml (9) -rw-r--r-- 1 root root 2122 Mar 24 14:20 fixedge.properties (10) -rw-r--r-- 1 root root 659 Mar 24 14:20 fixengine.properties (11) -rw-r--r-- 1 root root 3196 Mar 24 14:20 jms-adaptor.properties (12) -rw-r--r-- 1 root root 1298 Mar 24 14:20 log4j2.xml (13) drwxr-xr-x 9 root root 4096 Apr 4 15:25 reject (14) -rw-r--r-- 1 root root 3782 Apr 4 14:07 replication.properties (15) -rw-r--r-- 1 root root 313 Mar 24 14:20 rules.groovy (16) -rw-r--r-- 1 root root 287 Mar 24 14:20 schedules.xml (17) drwxr-xr-x 3 root root 0 Apr 4 15:25 session (18) -rw-r--r-- 1 root root 383 Mar 24 14:20 shell.properties (19) -rw-r--r-- 1 root root 30 Mar 24 14:20 users.properties (20) -rw-r--r-- 1 root root 10835 Mar 24 14:20 wrapper.conf (21)
- Hazelcast cluster configuration. See Cluster Service.
- Main spring application context.
- JMS related beans. See JMS Transport Adapter.
- JMX and SSH related beans.
- Replication-related beans.
- Routing related beans.
- Scheduler configuration.
- Spring Security configuration. See Security configuration.
- Fix server configuration.
- FEJ configuration properties.
- FIXAJ configuration properties. See FIX Antenna Java configuration.
- JMS adaptor configuration properties. See JMS Transport Adapter.
- Logging configuration. See Logging configuration.
- Directory with templates for FIX reject messages
- Replication service configuration. See Replication Service.
- Custom routing rules go here. See Routing Rules.
- Custom scheduler tasks go here.
- Directory with session configuration. See FIX Session configuration.
- Remote shell configuration. See Administrative shell configuration.
- Properties file containing users for in-memory authentication. See In-Memory Authentication.
- Wrapper configuration. See Wrapper configuration.