Version History

Version history archive

2.12.0 (2024-Jan-10)

Bug

  • JAVA-3100 - Socket remains open when logging in as initiator and the connection is refused

New Feature

  • JAVA-2990 - ExternalThread mode
  • JAVA-3097 - Make the maximum number of pending connections on listen ports configurable

2.11.1 (2023-Nov-13)

Improvement

  • JAVA-3071 - PossDupFlag and OrigSendingTime fields are added at the end of the message if the Flat message mode is selected
  • JAVA-3064 - Replace the lastAccessTime usage with the lastModifiedTime
  • JAVA-2443 - Support new datatypes from the latest EP

New Feature

2.11.0 (2023-Sep-05)

Task

  • JAVA-3058 - Update Distribution Package page according to the latest updates
  • JAVA-3056 - Remove Upgrade Notes page
  • JAVA-3042 - Add the latest FIX5.0SPEP280 to the engine package

Improvement

  • JAVA-3049 - BREAKING CHANGE: Add an ability to scramble any tag in the Logon message
  • JAVA-3034 - Describe the case with ResetSeqNumFlag when the initial Logon message was sent without this flag
  • JAVA-3033 - Parse QuickFIX dialects for SP1 and SP2
  • JAVA-3030 - Get rid of jakarta dependency
  • JAVA-2593 - Links are expected but missing in docs

New Feature

Bug

  • JAVA-3013 - Session.setThrottlingLimit(int messagesCount, long intervalDuration, TimeUnit intervalUnit) method does not set interval properly

2.10.0 (2022-Dec-16)

New Feature

  • JAVA-2983 - BREAKING CHANGE: Extend Session.MessageResendingListener with two callbacks onResendingStarted(..) and onResendingFinished(..)

  • JAVA-2961 - Acceptor that receives a Logon message with ResetSeqNumFlag(141)=Y should backup summary file

  • JAVA-2980 - Add engine setting LicenseAlertingDaysBeforeExpiration

Bug

  • JAVA-2981 - Reconnect failure leads to illegal monitor state exception

2.9.6 (2022-Nov-9)

Improvement

  • JAVA-2957 - Check whether the NextExpectedMsgSeqNum tag is specified in the confirmation logon message

New Feature

  • JAVA-2956 - Session level setting for processing NextExpectedMsgSeqNum(789) field

2.9.5 (2022-Oct-18)

Task

  • JAVA-2950 - Remove deprecated Session.getOutboundQueueCount() method

Bug

  • JAVA-2931 - Unexpected retransmission request is issued

2.9.4 (2022-Jul-14)

Bug

  • JAVA-2914 - Session.getOutboundQueueBytes() returns inconsistent data due to concurrency issue

New Feature

  • JAVA-2563 - Add support of DeliverToCompID, OnBehalfOfCompID tags for 3rd party routing

2.9.3 (2022-Jun-24)

New Feature

  • JAVA-2904 - Implement EngineSettings.get/setMessageResendingPortionMaximumSize(..) method

  • JAVA-2808 - Ability to build samples without pre-installed maven

  • JAVA-2639 - Session.LogonConfirmationTimeout/LogoutConfirmationTimeout setting

Bug

  • JAVA-2900 - Sequence Gap Fill message's NewSeqNo tag has an incorrect value in case of partial resend request

Improvement

  • JAVA-2899 - Update to the 1.0.72 version of onixs-util

  • JAVA-2687 - BREAKING CHANGE: Session.StateChangeListener.onStateChange(..) should NOT be called under Session's mutex

  • JAVA-2567 - Add Gradle build files to samples

2.9.2 (2022-Apr-4)

Improvement

  • JAVA-2519 - FIXML convertor support of DTD specifications

2.9.1 (2022-Mar-9)

Improvement

  • JAVA-2862 - BREAKING CHANGE: Message.assemble(final ByteBuffer buffer) method will not clear the buffer internally

  • JAVA-2648 - Add tags from FIX 5.0 SP2 Extension Pack

  • JAVA-2649 - Add enum values from FIX 5.0 SP2 Extension Pack

  • JAVA-2675 - Improve the readability of benchmark's output

Bug

  • JAVA-2857 - Incorrect processing of messages containing invalid number format

Task

  • JAVA-2761 - Add the latest EP dialect to the distribution package

2.9.0 (2022-Feb-2)

Improvement

  • JAVA-2838 - Implement Session.getOutboundMessages(final long beginSequenceNumber, final long endSequenceNumber) method

  • JAVA-2827 - Introduce Java 8 Date Time API

  • JAVA-2825 - Get rid of 3rd party Joda time

Bug

  • JAVA-2826 - FixBlock.getTimestamp() returns value based on local timezone rather than UTC

  • JAVA-2797 - The Coder.updateMissedIdentifiers(…) method must be public

New Feature

  • JAVA-2422 - BREAKING CHANGE: Method chaining

  • JAVA-2843 - Implement Session.getUTCTimestamp(..)/set(..) methods

  • JAVA-2613 - Format mask for the TestReqID field

2.8.0 (2021-Oct-1)

Improvement

  • JAVA-2770 - Field value validation should accept timestamp values with any possible precision

  • JAVA-2763 - Upgrade to “dialects-2.18.xsd”

  • JAVA-2674 - Add README.md files to Samples

  • JAVA-2670 - Add new EngineSettings parameters to programming guide

  • JAVA-2654 - Replace String with CharSequence in all setters

  • JAVA-2628 - Support “isRequired” attribute in the “Component” xml node

  • JAVA-2522 - Insufficient heap space for big dialect file

Bug

  • JAVA-2760 - Same session recreation reports incorrect error

  • JAVA-2737 - SessionScheduler.unregister(..) method call throws an exception

  • JAVA-2641 - Validation errors for BOOLEAN type

  • JAVA-2558 - Pluggable Storage Sample: storeOutboundMessage(..) does not remove outdated messages

New Feature

  • JAVA-1850 - Implement throttling mechanism for a session

2.7.3 (2021-Jun-4)

Bug

  • JAVA-2725 - Incorrect value during HighResolutionTimestamp parsing

2.7.2 (2021-Apr-26)

Bug

  • JAVA-2694 - Summary Files Moved to Storage/archive folder

  • JAVA-2691 - Setting setValidateCheckSum to ‘false’ does not allows to accept messages when CheckSum validation warning is thrown

  • JAVA-2690 - Wrong checksum calculation when raw message contains non-ASCII symbol

  • JAVA-2559 - Include the engine -javadoc.jar files into the distribution package

  • JAVA-2354 - Session does not send Logout reply when Logout message with gap was received

  • JAVA-2101 - Use String field type for string fields instead of Char for standard dictionaries FIX40 and FIX41

Improvement

  • JAVA-2684 - Copy Repeating Group instance from one Group to another

  • JAVA-2681 - Acceptor session should be disconnected out of scheduled time

  • JAVA-2538 - Message.toString() method should not re-calculate BodyLength and CheckSum fields

  • JAVA-2521 - Resolve issues related to MarketDepth

  • JAVA-2503 - Make Engine.onError() and Engine.onWarning() non-synchronized

  • JAVA-2374 - Avoid settings explicit application version fields (ApplVerID(1128), ApplExtID(1156), CstmApplVerID(1129)) on Session Level Messages

  • JAVA-2368 - Make Message.toString() method immutable

  • JAVA-2321 - Make the Engine compatible with the Java 11

New Feature

  • JAVA-2513 - Add Message.toJson() and Message.toXml() methods

2.7.1 (2020-Jul-31)

Bug

  • JAVA-2534 - Receiver thread sometimes hangs when the SSL-secure FIX session used

2.7.0 (2020-Jul-10)

New Feature

  • JAVA-2520 - FlatGroupReader for FlatMessage

  • JAVA-2512 - Option to switch on/off logging of outbound messages before/after sending.

  • JAVA-2508 - Implement thread pool spinning timeout

  • JAVA-2506 - Implement receive spinning timeout

  • JAVA-2494 - Support QuickFix required attribute of group tag

  • JAVA-2490 - Ability to override Repeating Group and make number of instances tag as required

Improvement

  • JAVA-2517 - FixBlock.getGroup() returns null in case a repeating group with 0 instances appears in raw message

  • JAVA-2493 - Upgrade to “dialects-2.16.xsd”

  • JAVA-2491 - Tag defined in a dialect without type should keep predefined type

  • JAVA-2478 - Session.sendTestRequest(..)/sendResendRequest(..) method call in non-established state

Bug

  • JAVA-2516 - FIX session is dropped when an incoming message type is not defined in an overridden dictionary

  • JAVA-2484 - ResendRequest message stored before the incoming message

  • JAVA-2482 - Incorrect RefSeqNum(45) for Session Reject(3) message

2.6.1 (2020-Apr-23)

New Feature

  • JAVA-2463 - Implement EngineSettings.set/getThreadPoolSize(..) method

Bug

  • JAVA-2462 - Group.removeEntry(..) method call corrupts the internal state of the Repeating Group

  • JAVA-2453 - Schedule sample produce an error at the end of the execution

2.6.0 (2020-Apr-07)

Bug

  • JAVA-2417 - Incorrect SessionRejectReason(373) returned in some scenarios

  • JAVA-2401 - Field type is not updated if it appears in the dialect with one of predefined type

  • JAVA-2385 - Link error/Receiver timeout while reset seq. number via Logon exchange is in progress

  • JAVA-2370 - Session reject message is not send in case validation error is detected in the received message

  • JAVA-2356 - Session does not perform more than one reconnect attempt

Task

New Feature

  • JAVA-2138 - Thread pool mechanism sharing sending/receiving threads

  • JAVA-1931 - Copy an entire repeating group from one FixBlock to another

  • JAVA-2391 - Session.getCounterpartyHostAsSpecified() returns counterparty host name/address as it is specified during logon

2.5.0 (2019-Oct-24)

New Feature

  • JAVA-2316 - Make configurable whether Acceptor thread is daemon or user thread

  • JAVA-2266 - Move terminated files into archive subdirectory

  • JAVA-2258 - Message construction/creation/initialization using MessageValidationFlags parameter

  • JAVA-2251 - Enum MessageValidationFlags

  • JAVA-2257 - Unknown Message Validation

  • JAVA-2243 - Engine level MessageMode configuration

  • JAVA-2249 - Engine level ValidateEmptyFieldValues configuration

  • JAVA-1818 - Validate the field values of FIX messages in accordance with the FIX protocol or its FIX Dictionary

  • JAVA-2188 - Implement Message.assemble(FlatMessage) method

  • JAVA-1753 - AsyncFileStorageRepository.setWriteErrorRetriesNumber(..)/getWriteErrorRetriesNumber()

  • JAVA-2274 - Add a GC-free interface to Message/FixBlock/Group classes

  • JAVA-1703 - Add append(int tag, StringBuilder value) method FixBlock/Group/FlatMessage classes

  • JAVA-1700 - Add setTimestamp(int tag, long currentTimeMillis) to FixBlock/Group/FlatMessage classes

  • JAVA-1698 - Add checkType(..) method to Message/FlatMessage classes

  • JAVA-1697 - Add containsSame(..) method to FixBlock/Group/FlatMessage classes

Improvement

  • JAVA-2250 - BREAKING CHANGE: Modify engine level ValidateFieldValues configuration

  • JAVA-2285 - BREAKING CHANGE: Move Logon message password scrambling from Session Storage to Session

  • JAVA-2278 - BREAKING CHANGE: SessionLevelMsgType types changed from String to char

  • JAVA-2306 - Application level messages received in Disconnected state

  • JAVA-2253 - Remove out of order logging in the .summary log file

  • JAVA-1693 - Make the checksum validation configurable

  • JAVA-2259 - Improve docs for adding custom tags and groups to Fixml Converter

  • JAVA-1705 - Improve Message() constructor docs

  • JAVA-2177 - Update Understanding Session States section of Programming Guide

Bug

  • JAVA-2296 - NextExpectedSeqMsgNum should be effectively ignored when ResetSeqNumFlag is specified in the Logon

  • JAVA-2294 - Session dispose in waiting for the confirming logon state hangs

  • JAVA-2284 - Password scrambling does not work for AsyncFileSessionStorage

  • JAVA-2004 - Session.ErrorListener is not called if there is an exception during parsing of incoming raw message to structured one

  • JAVA-1577 - Scheduler job has been deleted but not interrupted

Task

  • JAVA-2260 - BREAKING CHANGE: Rename MessageMode.Message(FlatMessage) to MessageMode.MESSAGE(FLAT_MESSAGE)

2.4.3 (2019-May-29)

Improvement

  • JAVA-2242 - BREAKING CHANGE: Break the connection in case the sending buffer max size is reached

Bug

  • JAVA-2241 - CME Enhanced Resend Mode change ResendRequest SeqNum if any message was sent during recovery

  • JAVA-2238 - Application messages interleaved with resent messages were processed out of order

2.4.2 (2019-May-20)

New Feature

  • JAVA-2236 - Interface for receiving initiator session connection event(s)

Improvement

  • JAVA-2235 - Optimize FlatMessage assemble

  • JAVA-2229 - Review all samples and fix inspection warnings

2.4.1 (2019-Apr-30)

Bug

  • JAVA-2228 - Exception while loading dialect which contains field details for non-standard field

  • JAVA-2225 - InSeqNum is not updated in the state file when RequestOnlyMissedMessages is used

2.4.0 (2019-Apr-11)

Bug

  • JAVA-2214 - Setting the same integer value multiple times increases the FlatMessage content length continuously

  • JAVA-2206 - Non-standard GroupInstance iterator remove behaviour

  • JAVA-2205 - Incomplete javadocs for classes in biz.onixs.fix.dictionary

  • JAVA-2191 - Receiver/Sender threads are not stopped properly

  • JAVA-2178 - Session.isDisposed() returns true while Session.dispose() is executing

  • JAVA-2167 - Turn the MaximumNumberOfRepeatingGroupEntries property functional back

Task

  • JAVA-2207 - Revert JAVA-1767: Add Connection.OutputQueueSize configuration

Improvement

  • JAVA-2203 - Upgrade to scheduler-settings-1.7.xsd

  • JAVA-2190 - Review/enhance of ParserException

  • JAVA-2183 - BREAKING CHANGE: If the keepSequenceNumbersAfterLogout argument is set to false, then sequence numbers should be reset during the reconnect too

  • JAVA-2148 - Refactoring of the biz.onixs.fix.dictionary

  • JAVA-2096 - Use two buffers instead of queue in Sending thread

  • JAVA-2014 - Make FlatMessage.get(int tag, int hintPosition) public

New Feature

  • JAVA-1851 - Support setting timezone via configuration file

2.3.3 (2019-Feb-01)

New Feature

  • JAVA-2139 - Include pom.xml for onixs-utils.jar

  • JAVA-2136 - Configure the messaging mode used internally

  • JAVA-2134 - Implement SessionScheduler.setConnectionRetriesNumber(..) and SessionScheduler.setConnectionRetriesInterval(..) methods

  • JAVA-2130 - Message construction and initialization from FlatMessage

Improvement

  • JAVA-2125 - Session.breakConnection() should also immediately release blocking methods execution

  • JAVA-2109 - Implement FixMessage.toString() method

  • JAVA-1738 - Single thread to listen to incoming connections on multiple ports

Bug

  • JAVA-2116 - Session level messages are processed before storing

  • JAVA-2108 - FieldIterator does not return the CheckSum field as the last one when there is a custom field

  • JAVA-2080 - Unable to listen on two different ports for the same SenderCompID, TargetCompID and FIX version

  • JAVA-2056 - Session storage implementation provides old non-actual messages

  • JAVA-2044 - Tag 263 for FIX.5.0 SecurityDefinitionRequest<c> message should be simple tag instead of group

  • JAVA-2089 - Tag CollAction<944> should not be present in message CollateralReport<BA> in FIX44 Standard dialect

2.3.2 (2018-Nov-12)

Improvement

  • JAVA-2057 - BREAKING CHANGE: SessionStorage.getOutboundMessages(..) method return type

  • JAVA-2031 - Include logon exchange into reconnect attempts cycle

  • JAVA-1979 - Refactoring Session.logonAsInitiator(..)/logonAsAcceptor() methods path

Bug

  • JAVA-2027 - If a parser exception is detected acceptor should shutdown the connection after optionally sending Logout message

  • JAVA-2003 - Logout while sending messages may cause a deadlock

Task

  • JAVA-1995 - BREAKING CHANGE: Session.getMaxStorageSize()/setMaxStorageSize(..) value type change from long to int

New Feature

2.3.1 (2018-Aug-2)

Bug

  • JAVA-1970 - FlatMessage fails to parse empty field value

Improvement

  • JAVA-1751 - Keep the out seq. number unchanged if Session.send(..) method call failed with I/O error

2.3.0 (2018-Jul-24)

New Feature

  • JAVA-1964 - Script to install the engine jars into the local Maven repository

  • JAVA-1942 - Implement Message.containsSame(..) method

  • JAVA-1872 - Option to delete previous log files that are older than the configured number of days during reset seq. number

Improvement

  • JAVA-1880 - BREAKING CHANGE: Session with same sender and target comp id but with different FIX version should be possible to create

  • JAVA-1961 - Session.getTimestampProvider() returns timestamp provider

  • JAVA-1960 - Session.setSpecifyApplVerIdField(..) sets whether to specify ApplVerID(1128) tag in all FIX messages when a FIX protocol version FIX 5.0 and above is used

  • JAVA-1915 - FlatMessage should be used internally only when there are corresponding callback subscriptions

  • JAVA-1913 - Sequence number of the sequence gap message should not be stored in the session storage

  • JAVA-1776 - Add Maven build files to samples

  • JAVA-1947 - Hide QuickFIXTranslator class from public API javadocs

  • JAVA-1763 - Add blocking note to the Session.sendTestRequest() method javadoc

Bug

  • JAVA-1959 - OriginalSendingTime(122) not in the format of the custom TimestampProvider

  • JAVA-1944 - ArrayIndexOutOfBoundsException in FlatMessage.containsSame(..) method

Task

  • JAVA-1916 - Add typed adders, getters and setter to FlatMessage

2.2.2 (2018-May-23)

Task

  • JAVA-1905 - Reverted breaking change JAVA-1847

Bug

  • JAVA-1898 - Header and Footer are ignored while using QuickFix dialect

  • JAVA-1897 - Overlay of field types while using QuickFix dialect

  • JAVA-1886 - Parsing Data tag failed

  • JAVA-1876 - CustomRepeatingGroupSample does not uses custom schema

New Feature

  • JAVA-1883 - SslNeedClientAuth option to specify whether client authentication should be required

  • JAVA-1819 - Get details for a specific field such as type and set of valid values

Improvement

  • JAVA-1845 - Sign OnixS Java Archive (JAR) files with the OnixS certificate

2.2.1 (2018-Mar-20)

Bug

  • JAVA-1853 - MsgType AS considered as Logon (A) message

2.2.0 (2018-Mar-13)

Task

  • JAVA-1847 - BREAKING CHANGE: ScaledDecimal.toString() method should print fields mantissa and exponent separately

  • JAVA-1795 - BREAKING CHANGE: Message FirstMessageNotLogonException.getReceivedMessage() to FixMessage FirstMessageNotLogonException.getReceivedMessage()

  • JAVA-1794 - BREAKING CHANGE: DynamicAcceptorArgs.setIncomingLogonMessage(Message) to DynamicAcceptorArgs.setIncomingLogonMessage(FixMessage)

  • JAVA-1793 - BREAKING CHANGE: Message DynamicAcceptorArgs.getIncomingLogonMessage() to FixMessage DynamicAcceptorArgs.getIncomingLogonMessage()

  • JAVA-1774 - BREAKING CHANGE: SessionStorage.storeInboundMessage(Message, ByteBuffer, long) to SessionStorage.storeInboundMessage(FixMessage, ByteBuffer, long)

  • JAVA-1773 - BREAKING CHANGE: MessageFilter.filter(Message) to MessageFilter.filter(FixMessage)

  • JAVA-1767 - BREAKING CHANGE: Remove Connection.OutputQueueSize configuration

Bug

  • JAVA-1843 - Session hang while reconnecting

  • JAVA-1836 - TestRequest message is sent incorrectly when session is configured to use SSL context

  • JAVA-1826 - Incorrect internal state of a session after a reconnect

  • JAVA-1783 - FixBlock.getDouble(..) return incorrect value in case of precise double

  • JAVA-1782 - Javadoc text unfinished

  • JAVA-1780 - Fix Session.send(..) documentation

  • JAVA-1766 - Infinite loop sending and receiving Logon message both containing ResetSeqNumFlag=Y

Sub-task

New Feature

  • JAVA-1809 - Flexible Messaging API

  • JAVA-1808 - Implement Session.setEventArgReuse(..)/isEventArgReuse() methods

  • JAVA-1804 - Implement Session.send(FlatMessage) method

  • JAVA-1803 - Implement Session.OutboundApplicationFlatMessageListener interface

  • JAVA-1802 - Implement Session.OutboundApplicationFlatMessageArgs class

  • JAVA-1801 - Implement Session.InboundSessionFlatMessageListener interface

  • JAVA-1800 - Implement Session.InboundSessionFlatMessageArgs class

  • JAVA-1799 - Implement Session.InboundApplicationFlatMessageListener interface

  • JAVA-1798 - Implement Session.InboundApplicationFlatMessageArgs class

  • JAVA-1797 - Implement FlatMessageFactory interface

  • JAVA-1796 - Implement Session.FlatMessageEventArgs class

  • JAVA-1791 - Implement FlatMessage class

  • JAVA-1790 - Implement SessionStorage.storeOutboundMessage(ByteBuffer rawMessage, long msgSeqNum) method

  • JAVA-1743 - Implement FixMessage class

2.1.1 (2018-Jan-17)

Bug

  • JAVA-1778 - Socket connections not cleaned up, eventually leading to ‘too many files open’ exception

Task

  • JAVA-1722 - BREAKING CHANGE: Remove Session.useMillisecondsInSendingTimeField(..) methods

2.1.0 (2017-Dec-07)

New Feature

  • JAVA-1740 - Log full FIX dialect information

  • JAVA-1733 - Engine.addSslListeningPort(int, SSLContext) method

  • JAVA-1725 - TimestampPicosProvider

  • JAVA-1724 - TimestampDateProvider

  • JAVA-1723 - Session.getSendingTimeFormat()/setSendingTimeFormat(..) methods

  • JAVA-1721 - FixBlock.set(..)/getHighResolutionTimestamp(..) methods

  • JAVA-1714 - Session.setSendSpinningTimeout(..)/getSendSpinningTimeout() methods

  • JAVA-1675 - Threads affinity

  • JAVA-1568 - Support the picosecond timestamps that are required by MiFID II

Improvement

  • JAVA-1735 - Send Logon to respond to Logon message with 141=Y when the initial Logon message was sent without this flag

  • JAVA-1661 - Migrate to Java 1.8

Bug

  • JAVA-1695 - Sequence gap state is not reset in case of disconnecting during processing of incoming message

Sub-task

2.0.0 (2017-Sep-11)

Improvement

  • JAVA-1654 - Use asynchronous networking IO API

  • JAVA-1657 - FixBlock.set(int tag, double value, int precision) should round towards nearest neighbor

  • JAVA-1600 - Include list of dependencies in the engine packages in pom.xml format

New Feature

  • JAVA-1656 - Implement TimestampMicrosProvider

Task