FIX Antenna Java Release Notes
- 1 FIX Antenna Java 2.27.0
- 2 FIX Antenna Java 2.26.0
- 3 FIX Antenna Java 2.24.4
- 4 FIX Antenna Java 2.24.2
- 5 FIX Antenna Java 2.24.0
- 6 FIX Antenna Java 2.22.0
- 7 FIX Antenna Java 2.21.1
- 8 FIX Antenna Java 2.21.0
- 9 FIX Antenna Java 2.20.2
- 10 FIX Antenna Java 2.20.1
- 11 FIX Antenna Java 2.20.0
- 12 FIX Antenna Java 2.19.7
- 13 FIX Antenna Java 2.19.4
- 14 FIX Antenna Java 2.19.3
- 15 FIX Antenna Java 2.19.2
- 16 FIX Antenna Java 2.19.1
- 17 FIX Antenna Java 2.19.0
- 18 FIX Antenna Java 2.18.3
- 19 FIX Antenna Java 2.18.2
- 20 FIX Antenna Java 2.18.1
- 21 FIX Antenna Java 2.17.11
- 22 FIX Antenna Java 2.17.10
- 23 FIX Antenna Java 2.17.9
- 24 FIX Antenna Java 2.17.8
- 25 FIX Antenna Java 2.17.7
- 26 FIX Antenna Java 2.17.6
- 27 FIX Antenna Java 2.17.5
- 28 FIX Antenna Java 2.17.4
- 29 FIX Antenna Java 2.17.3
- 30 FIX Antenna Java 2.17.2
- 31 FIX Antenna Java 2.17.1
- 32 FIX Antenna Java 2.17.0
- 33 FIX Antenna Java 2.16.5
- 34 FIX Antenna Java 2.16.4
- 35 FIX Antenna Java 2.16.3
- 36 FIX Antenna Java 2.16.2
- 37 FIX Antenna Java 2.16.1
- 38 FIX Antenna Java 2.16.0
- 39 FIX Antenna Java 2.12.29
- 40 FIX Antenna Java 2.12.28
FIX Antenna Java 2.27.0
FIX Antenna Java 2.27.0 is released on Jun 27, 2025.
New Features and Improvements
JMS 3.0 Support
Added support for JMS 3.0. This update ensures FIX Antenna Java remains compatible with the latest enterprise Java standards while offering flexibility for both legacy and modern deployments.
Benefits:
Modern Jakarta EE Compatibility: JMS 3.0 aligns with Jakarta EE 9+, making it easier to integrate with modern enterprise Java applications and containers.
Namespace Transition: Moves from javax.jms to jakarta.jms, reflecting the shift from Oracle to the Eclipse Foundation and ensuring future-proofing for Java EE evolution.
Cleaner API Design: Builds on the simplified API introduced in JMS 2.0, reducing boilerplate code and improving developer productivity.
Improved Support for Reactive Messaging: JMS 3.0 is better suited for asynchronous, event-driven architectures, which are common in microservices and cloud-native applications.
FailOver Storage Upgraded to Java 21
The Failover (FO) storage component has been migrated from Java 8 to Java 21, ensuring compatibility with FIX Antenna Java (Java 17+) and improving maintainability.Improved Security
JMS connection passwords are no longer written to logs, enhancing overall security.Better Visibility for StorageFactory Fallback
Improved logging when the application falls back to the default StorageFactory due to misconfiguration, making it easier to detect and fix.
Fixed Bugs
Improved stability of the ServerRoundTripLatencyBM benchmark on Linux.
Fixed misleading warning about infinite resend loop in certain edge cases.
Resolved an issue where modified incoming messages were incorrectly stored in logs.
FIX Antenna Java 2.26.0
FIX Antenna Java 2.26.0 is released on Jan 27, 2025.
New Features and Improvements
FIX Antenna Java now requires Java 17 or higher, providing enhanced performance and access to the latest language features. This update resolves security vulnerabilities present in older Java versions. Additionally, all libraries used have been updated to their latest versions, and the build process has been improved to ensure compatibility with Java 17.
Fixed Bugs
Fixed an issue in FIX Antenna Java that incorrectly processed logon messages with ResetSeqNumFlag (141=Y) and MsgSeqNum (34) greater than 1. The system now correctly rejects these logons and closes the connection, ensuring enhanced message integrity and session reliability.
Resolved the runStorages benchmark issue, ensuring it runs smoothly on Java 17 without additional chronicle parameters.
Addressed an intermittent issue where FIX Antenna Java occasionally failed to accept a valid license during benchmark runs. This fix ensures that licenses are consistently recognized, preventing unexpected failures and allowing uninterrupted usage with valid licenses.
FIX Antenna Java 2.24.4
FIX Antenna Java 2.24.4 is released on May 24, 2023.
FIX Protocol Changes
Other Changes
Critical vulnerabilities were removed.
Fixed Bugs
Fixed the issue when FIX Antenna Java stopped adding FIX messages to log storage when the value of the timestampsInLogs property was changed during FIX session termination.
Fixed the issue when FIX Logs Replicator didn't replicate FIXEdge Java log files with timestamps in the filename.
FIX Antenna Java 2.24.2
October 18, 2022
New Features and Improvements
QuickFIX dictionaries support
Started from this version we support QuickFIX dictionaries for validation
Custom throttling implemented
New parameter 'user.throttlehandler' added to customize incoming throttling and need to specify handler class extended from AbstractUserGlobalMessageHandler
Added new 'MaxConnectedStateWaitTime' property for JMS adaptors
New parameter added for JMS adaptors to specify timeout before send to wait for connected state
Critical bugs and fixes
Fix for performance of prepared messages
Problem description: Serialization of prepared messages to transport had bug affected performance
Solution: Serialization of prepared messages was fixed
Fix for incoming file storage index file
Problem description: Incoming file storage index file was empty with 'markIncomingMessageTime=true'
Solution: File storage was fixed to properly support this parameter
Fix Kafka adaptor to support custom serializer/deserializer if default specified
Problem description: Kafka adaptor didn't use custom serializer/deserializer if default serializer/deserializer specified in properties
Solution: Fix Kafka adaptor to use custom serializer/deserializer if it's specified
Apache Log4j2 was updated to version 2.19.0.
Problem description: Apache Log4j2 2.18 vulnerable to a remote code execution (RCE) attack.
Solution: Log4j2 dependencies were updated to the latest ones.
FIX Antenna Java 2.24.0
Fabruary 10, 2022
New Features and Improvements
Added the ability to apply FIX session sequence numbers from an incoming Logon(A) message.
A new configuration option, "ResetSeqNumFromFirstLogon", was added. It determines if sequence numbers should be accepted from the incoming Logon(A) message. The option allows reducing miscommunication between sides and makes it easier to connect after a scheduled sequence reset. Read more
Added support of Tenor, LocalMktTime, XID, and XIDREF field types.
The FIX Protocol introduced new field types starting from EP161.
Added the ability to optionally pass unsent messages back to a user's application on JMS producer disconnect.
A new option, AllowRejectMessages, was added for JMS producers. If the option is enabled, unsent messages are pushed to the registered RejectMessageListener callback.
Critical bugs and fixes
A FIX session with SlicedFileStorageFactory wasn't able to recover sequences.
Problem description: Sequence reset for a FIX session with sliced persistent storage led to corrupting the storage file name and as such the session wasn't able to recover sequences for that file later.
Solution: The storage implementation was fixed.
Apache Log4j2 was updated to version 2.17.1.
Problem description: Apache Log4j2 versions 2.0-beta7 through 2.17.1 are vulnerable to a remote code execution (RCE) attack.
Solution: Log4j2 dependencies were updated to the latest ones.
MaxMessageSize worked incorrectly if its value was defined as any allowed message size.
Problem description: A FIX session with MaxMessageSize=0 (unlimited size) rejects messages with Raw data tags (e.g. XML message 35=n).
Solution: The validation of raw data length is fixed.
The JMS adaptor couldn't be stopped while reconnecting.
Problem description: The JMS adaptor couldn't be stopped in the RECONNECTING state.
Solution: The reconnecting logic was fixed.
FIX Antenna Java 2.22.0
September 11, 2020
New Features and Improvements
Extended acceptor ports management.
A listening port for incoming FIX connections can be defined in the acceptor configuration (read more).
SSL configuration per FIX session.
A FIX session configuration includes options for SSL connection configuration (read more).
Critical bugs and fixes
CRITICAL. Java 11 compatibility issues.
Problem description: Some functionality, such as a FIX message validation functionality, memory-mapped files based storage(MMFStorageFactory), and Chronicle Queue based storage(ChronicleStorageFactory), didn't work with Java 11.
Solution: code was updated to conform to Java 11 API.
CRITICAL. A FIX Session with Chronicle Queue based storage(ChronicleStorageFactory) failed to handle ResendRequest(2) incoming requests.
Problem description: FIX Session with Chronicle Queue based storage hung on the processing of incoming ResendRequest(2) due to deadlock.
Solution: Deadlock in code was resolved.
The acceptor session always used blocking NIO transport.
Problem description: The acceptor session ignored the combination of configuration options useJavaNIO=true and blockingNIOSocket=false and always used blocking NIO transport.
Solution: FIX server and acceptor session initialization code was fixed.
The benchmark sample SendMarkedDataWithSlowClientsBM failed after its restarts.
Problem description: Restart of the sample without cleaning logs failed with an error.
Solution: The sample was fixed.
FIX Antenna incorrectly processed invalid values range for maxMessageSize.
Problem description: If the value for maxMessageSize is greater then Integer.MAX_INT, FIX Antenna uses -1 value instead of the default.
Solution: Parsing was fixed, the default value in 1Mb is applied if the invalid value is defined for maxMessageSize property.
Optimized memory usage by FIXFieldList
Problem description: FIXFieldList could produce some garbage during its reusing (if the FIXFieldList object is taken from the pool): it didn’t release memory for some removed tags.
Solution: Tag removing operation was fixed.
FIX Antenna Java 2.21.1
December 02, 2019
New Features and Improvements
Custom dictionaries for FIX session.
Custom dictionaries for FIX sessions can now be defined in FIX Antenna Java configuration file, assigned their own "ID". Read more.
Handling of JMS adapter when its internal outgoing queue is full.
The default behavior is improved: JMS Adapter waits for some reasonable and configurable time and if it still can't put a message into the queue it throws QueueIsFullException exception.
Critical bugs and fixes
Rejected FIX session waits for a Logout(5) answer.
Problem description: FIX session sent Logout(5) message on invalid incoming Logon(A) message or during the session' reject procedure and waited for an answer, which isn't necessary in this case by FIX protocol. It led to further failed tries of reconnecting.
Solution: FIX session sends Logout and doesn't wait for an answer.
Parsing of the boundary integer values in FIX messages and configuration files was fixed.
Problem description: The parsing algorithm had a bug with parsing the values which are close to Integer.MAX_VALUE and Integer.MIN_VALUE - it threw IllegalArgumentException as a notification about overfill.
Solution: Parsing algorithm was fixed.
FIX session with sync_noqueue mode sends a Heartbeat(0) message before Logon(A) on connect.
Problem description: FIX Antenna may send a Heartbeat(0) message before Logon(A) for a new FIX session.
Solution: The problem was related to FIX session initialization. FIX session behavior is fixed.
FIX Antenna Java 2.21.0
September 04, 2019
New Features and Improvements
Critical bugs and fixes
FIX session with no-queue sending mode might send a bunch of messages with higher than expected MsgSeqNum(34) right after reconnect.
Problem description: FIX session with no-queue sending mode didn't wait for the finish of sequences synchronization procedure and started to send application messages immediately after Logon message. It might lead to sending a bunch of messages with sequence numbers higher than expected and receiving o lot of ResendRequests(2) from others side.
Solution: Awaiting for an answer from the other side after reconnect during some reasonable period was introduced.
FIX Antenna Java 2.20.2
August 15, 2019
New Features and Improvements
Don't print exception stack traces in case of logging level “INFO”, “WARN” or “ERROR”.
Changed messages with meaningful problem descriptions. Exception stack traces still can be accessed with DEBUG and TRACE logging levels.
Critical bugs and fixes
CRITICAL. Incorrect serialization of messages, which was taken from the internal message pool.
Problem description: Application, which uses prepared messages, under certain circumstances corrupted messages in the pool. It led to the error and broke the connection.
Solution: Logic for management of messages in the pool was fixed.
Problem with parsing iLink Session Access Secret Key file, which is used for CME Secure Logon support.
Problem description: File with access keys for iLink created via CME's website was missing "Environment" entry. Such file caused an error when the adapter was parsing it.
Solution: Parsing the iLink Session Access Secret Key was improved and made "Environment" entry optional in this file.
FIX Engine sends redundant Logout(5) messages if there is no answer for TestRequest(1) during some reasonable time.
Problem description: If the application has not received any data for (HeartBtInt(108) + “some reasonable transmission time”) seconds, it should transmit a TestRequest(1) message. If there is still no Heartbeat(0) message answer received then the connection should be considered lost and the session should be closed. There is no reason to send Logout(5) message for such FIX session.
Solution: Recovery logic was improved and sending the redundant Logout(5) message was removed.
FIX engine sends Heartbeat(0) message right after FIX session reconnect.
Problem description: FIX engine sent Heartbeat(0) message as a first message instead of Logon(A) message. It led to error on the other side and unexpected closing of the FIX session.
Solution: FIX Antenna Java support message queuing for outgoing messages. Session-level messages, normally, should be sent out of turn. Such queue may contain session-level messages, like Heartbeat(0) or TestRequest(1), at the moment of a broken connection. After the reconnect they are outdated but they are still in a queue and in front of new Logon(A) message. To solve this issue, additional cleaning of such outdated out-of-turn messages was added right before session connect.
FIX engine doesn't generate a warning message if receives SequenceReset(4) (Reset) message with NewSeqNo(36) value which is equal to the expected sequence number.
Problem description: According to FIX specification, when FIX engine receives SequenceReset(4) (Reset) message with NewSeqNo(36) = to the expected sequence number, it has to accept such reset but "generate a "warning" condition in test output". Otherwise, FIX engine doesn't write such working messages in some cases.
Solution: Printing a warning message to engine log was added for such cases.
FIX engine increments the expected sequence when process SequenceReset(4) (Reset) message with NewSeqNo(36) that is less than the expected sequence number.
Problem description: According to FIX specification, when FIX engine receives SequenceReset(4) (Reset) message with NewSeqNo(36) < then expected sequence number, it has to reject such reset with reason SessionRejectReason(373) = "Value is incorrect (out of range) for this tag" and doesn't change expected sequence number. Otherwise, FIX engine accepted SequenceReset(4) (Reset), sent Reject(3) for it but incremented expected sequence number.
Solution: Processing of SequenceReset(4) (Reset) message was improved.
FIX engine accepts duplicates of SequenceReset(4) (Gap Fill) message with MsgSeqNum(34) that is less than the expected sequence number.
Problem description: According to FIX specification, when FIX engine receives duplicate SequenceReset(4) (Gap Fill) message with MsgSeqNum(34) < than expected sequence number and PossDupFlag(43) = “Y” it have to ignore such message. Otherwise, FIX engine accepted it and change the result expected sequence number.
Solution: Processing of SequenceReset(4) (Gap Fill) message was improved.
Some of JMS and Kafka samples could not be started in Linus.
Problem description: Scripts for start samples didn't work due to syntax errors.
Solution: Bash scripts for running samples were fixed.
FIX Antenna Java 2.20.1
April 16, 2019
New Features and Improvements
New methods for sequence management were introduced.
FIX session extended with a set of methods for separate set and get session' sequences:
FIXSession.setInSeqNum(long)
FIXSession.getInSeqNum()
FIXSession.setOutSeqNum(long)
FIXSession.getOutSeqNum()
Improved notification about delivering messages to Kafka in Kafka Adaptor.
New implementation notifies about successful delivery only when Kafka confirms such operation.
FIX Antenna Java 2.20.0
March 06, 2019
New Features and Improvements
Added JMX interface for FIX session management.
Implemented JMX interface allows managing FIX session with standard Java mechanism. JMX interface provides the same volume of operation for FIX Antenna as FIXICC has.
Added Kafka adapter.
The new adapter for communication with Kafka is added. It provides pub/sub mechanism for Kafka topics. Package includes samples, which help to route FIX messages from FIX Session to Kafka.
Default engine logging mechanism migrated to Log4j2 implementation.
FIX Antenna Java 2.19.7
December 18, 2019
New Features and Improvements
The sample for CME iLink adapter was updated.
CME iLink sample was update to provide easier interaction with CME Autocert+ certification platform.
Critical bugs and fixes
CRITICAL. The setting of double type may corrupt the FIX message.
Problem description: The problem was reproduced in parsing of prepared messages when setting double type.
1) the sum of size of an integer part and fractional part (precision parameter) exceed the reserved space for this tag in a message;
2) the fractional part of double values might be rounded.Solution: Serialization of doubles to internal message' buffers was fixed.
FIXSession.setSequenceNumbers() method doesn't change sequence number after the FIX session was disconnect.
Problem description: FIX Session had an issue with updating its persistent state and, therefore, in disconnected state setSequenceNumbers() method didn't provide the correct result.
Solution: the session state updating logic was fixed.
Scheduled session uses invalid TimeZone if FIX session has to start during initialization.
Problem description: Scheduled session may be configured to used custom TimeZone for scheduling session' start/stop actions.But, due to the bug, scheduled session always used default local TimeZone if the session should be started during its initialization.if the session should be started during its initialization.
Solution: Scheduled session initialization logic was fixed to use correct TimeZone.
FIX session with sync_noqueue mode sends application message before Logon(A) on connect.
Problem description: There were cases when a new connection is established FIX Antenna sent application message, which wasn't successfully sent during the previous connection session, before Logon(A) message.
Solution: Initialization of FIX sessions with sync_noqueue mode was fixed. User's sending threads will be blocked till the engine successfully sends Logon(A) message.
ignoreResetSeqNumFlagOnReset setting did not work at session start for Acceptor.
Problem description: Even if ignoreResetSeqNumFlagOnReset was set to true, acceptor FIX session still sent ResetSeqNumFlag(141=Y) in answer to counterparty.
Solution: Processing of ignoreResetSeqNumFlagOnReset by acceptor was fixed.
FIX Antenna ignores incoming TestRequest(1) with higher sequence number than expected.
Problem description: FIX Antenna ignored incoming TestRequest(1) with a higher sequence number than expected. As a result, counterparty never receives an answer for TestRequest(1) and can break the connection.
Solution: The order of session' handlers, which process the incoming message, was changed to process TestRequest(1) before the engine marks it as an out-of-order message.
FIX Antenna writes incorrect timestamp into storage files.
Problem description: FIX Antenna wrote incorrect timestamp for incoming messages when option markIncomingMessageTime is enabled.
Solution: The bug with timestamp calculation was fixed.
FIX Antenna Java 2.19.4
November 12, 2018
New Features and Improvements
A new fan-out sample is added to the package.