Version History
2.14.2 (2025-Jun-26)
Improvement
- JAVA-3416 - Add support for ISO-8859-1 encoding
- JAVA-3400 - Reject Logon messages received in the Established state without ResetSeqNumFlag and NextExpectedMsgSeqNum
- JAVA-3388 - Prevent enabling both RequestOnlyMissedMessages and ReportNewMessagesWhileWaitingForMissedMessages due to conflicting behavior
- JAVA-3372 - Add validation for undefined types and components in the dialect
- JAVA-3370 - BREAKING CHANGE: Rename MessageResendingPortionMaximumSize setting to ResendingBatchSize
- JAVA-3310 - ResendingBatchSize should be described in the Programming Guide
- JAVA-3171 - Show warning for duplicated fields in the message body
- JAVA-1845 - Sign OnixS Java Archive (JAR) files with the OnixS certificate
Task
- JAVA-3368 - Support EP 296
Bug
- JAVA-3339 - Message.toXml() does not escape special characters, producing invalid XML
2.14.1 (2025-Mar-27)
Improvement
Bug
2.14.0 (2025-Feb-24)
Improvement
- JAVA-3343 - Scramble Password(554) and NewPassword(925) fields of Logon message when it is logged
- JAVA-3342 - Improve logging clarity for invalid Logon messages
- JAVA-3322 - Add links to our online FIX Parser
- JAVA-3308 - Send close notify when closing SSL connection
- JAVA-3297 - Setting thread affinity must provide a detailed message in case of failure
- JAVA-3112 - BREAKING CHANGE: Reject<3> administrative message should be retransmitted during the gap-fill process
- JAVA-2005 - Add sequence diagram that illustrates what callback is called when a new message is received
New Feature
Bug
Task
2.13.5 (2024-Oct-30)
Improvement
- JAVA-3302 - Engine must send a consistent reject reason for invalid instance counts
- JAVA-3292 - Send Logout if no Heartbeat is received after TestRequest
- JAVA-3274 - Include JAR Version in Manifest
- JAVA-3145 - Describe the Throttler class in the Programming Guide
- JAVA-2312 - Add Dialect Validation sample
Bug
- JAVA-3296 - Reject message must be sent in case of incorrect datetime values
Task
- JAVA-3227 - Add FIX.Latest EP292
New Feature
Sub-task
- JAVA-2012 - Update docs referring to FAST 1.2 feature
2.13.4 (2024-Sep-06)
Bug
2.13.3 (2024-Aug-16)
Bug
Task
- JAVA-3229 - Remove validation of BeginString value
New Feature
- JAVA-3213 - Session.preFill(..) method
2.13.2 (2024-Jul-26)
Bug
- JAVA-3226 - Message.init(..) does not reset unknown fields
Task
- JAVA-3200 - Add FIX.Latest EP289
2.13.1 (2024-Jul-19)
Task
Improvement
Bug
New Feature
- JAVA-3126 - Session.tryThrottle() method
2.13.0 (2024-Jun-18)
Bug
New Feature
- JAVA-2420 - Strongly Typed Messages
Improvement
- JAVA-3007 - Update dialect schema to support FIXLATEST version
- JAVA-3189 - Set SessionRejectReason to 5 when EndSeqNo is out of range in a ResendRequest message
- JAVA-3118 - Get ride of SimpleDateFormat and use DateTimeFormatter instead
- JAVA-3134 - Update HighResolutionTimestamp to use java.time.LocalDateTime instead java.util.Calendar
Task
2.12.0 (2024-Jan-10)
Bug
- JAVA-3100 - Socket remains open when logging in as initiator and the connection is refused
New Feature
2.11.1 (2023-Nov-13)
Improvement
New Feature
- JAVA-2923 - Support HTTP Proxy
2.11.0 (2023-Sep-05)
Task
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
- JAVA-3045 - Add Session.logoutAsync(..) method
- JAVA-3031 - "override" mode should remove all predefined valid values
- JAVA-3023 - Message JSON parser
- JAVA-2986 - Publish samples online
- JAVA-2943 - Add Session.logonAsInitiatorAsync(..) methods
- JAVA-2573 - Dynamic Acceptor Sample
- JAVA-1603 - Support SOCKS Proxy
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
Bug
- JAVA-2900 - Sequence Gap Fill message's NewSeqNo tag has an incorrect value in case of partial resend request
Improvement
2.9.2 (2022-Apr-4)
Improvement
- JAVA-2519 - FIXML convertor support of DTD specifications
2.9.1 (2022-Mar-9)
Improvement
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
Bug
New Feature
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
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
2.6.1 (2020-Apr-23)
New Feature
- JAVA-2463 - Implement EngineSettings.set/getThreadPoolSize(..) method
Bug
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
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
2.4.2 (2019-May-20)
New Feature
- JAVA-2236 - Interface for receiving initiator session connection event(s)
Improvement
2.4.1 (2019-Apr-30)
Bug
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
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
Bug
Task
- JAVA-1995 - BREAKING CHANGE: Session.getMaxStorageSize()/setMaxStorageSize(..) value type change from long to int
New Feature
- JAVA-1559 - Support FAST 1.2
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
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
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
New Feature
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
- JAVA-1815 - Programming Guide update
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
Bug
- JAVA-1695 - Sequence gap state is not reset in case of disconnecting during processing of incoming message
Sub-task
- JAVA-1663 - Fix javadocs generation errors
2.0.0 (2017-Sep-11)
Improvement
New Feature
- JAVA-1656 - Implement TimestampMicrosProvider
Task
- JAVA-1652 - Remove DirectSend mode