Skip to content

QFJ 3.0.0 release notes

Christoph John edited this page Mar 3, 2026 · 1 revision

Summary of changes

Features

  • Resend abort: Implement resend abort when send() returns false; simplify resend abort warning and use session log.
  • JMX: Add start() method to JMX Connector operations to start Acceptor/Initiator after stopping.
  • Session / configuration: Add removeSection() to SessionSettings; add SessionSettings.getBoolOrDefault(); add onWarnEvent() (defaults to onErrorEvent if not implemented); add SocketConnectTimeout and SocketConnectProtocol fallback configuration.
  • Validation: Add FirstFieldInGroupIsDelimiter / property to set repeating group delimiter from first tag in group; enhance ValidateFieldsOutOfOrder logic; rework Data Dictionary handling to separate DataDictionarySettings from DataDictionary (QFJ-982).
  • Logon: Validate DefaultApplVerID from Logon in Session.nextLogon(); validate Logon before acting on ResetMsgSeqNum flag (#549).
  • Message queue: Expose MessageQueue interface for custom implementation (#380); add bounded-size in-memory message queue.
  • FieldMap / Session: Add FieldMap API methods for for-each use (#347); add SessionID to SessionStateListener methods (#370).
  • FIX Latest / Orchestra: FIX Latest support and FIX Orchestra tooling; FIXT11 and minimal-fix-latest; code/dictionary generation from FIX orchestration; class pruner plugin; replace order functionality.
  • Other: Charset support for BytesField (QFJ-684); allow sending unchanged message in Session#send (#395); add Character.class for FieldType.CHAR; improve IntConverter performance; optimize convertToLocalDateTime and session reset; improve UtcTimeStampField instantiation; add getIoSession().

Bug fixes

  • Session / connector: Fix thread leak in SessionConnector; fix NPE and context class loader; remove unnecessary session close when already closed; fix UseDataDictionary=N when dataDictionaryProvider is null; remove duplicated disconnect case; improve disconnect reason when ResetOnLogon is not honoured.
  • Reset/Persist: Fix ResetOnLogon/ResetOnLogout/ResetOnDisconnect when PersistMessages=N (#316).
  • Schedule: Fix schedule handling when EndTime < StartTime in different timezones.
  • Parsing / XML: Fix FIX message XML conversion (#322); fix parsing infinite loop on invalid FIX message (#434).
  • Group/FieldMap: Remove group entry entirely when removing a group (#414); improve FieldMap null handling (#567); clean up SessionSettings.getBool() exception handling (#575).
  • File store: Filestore message length fix (650).
  • Executor example: Fix ExecType for FIX 4.1/4.2 (Issue #968); set correct ExecType in ExecutionReport (#404).
  • Tests / cleanup: Fix DataDictionaryTest DTD assertion for locale; fix FileUtilTest resource not found (#654); correct FileUtil for 403 with User-Agent; copy constructor retains setting; various test and cleanup fixes.

Security & TLS

  • Replace deprecated TLS cipher suites with TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 / TLS_RSA_WITH_AES_128_GCM_SHA256; remove deprecated cipher suites from CERTIFICATE_REQUIRED_CIPHER_SUITES.
  • SNI fixes; comprehensive cipher list for Windows JDK 21; fix intermittent SSLCertificateTest with explicit cipher suites; SSL SOCKS proxy tests.
  • Remove custom MINA SSL filter; MINA 2.2.x update.
  • Upgrade Guava for vulnerability mitigation; Snyk/dependency updates.

Dependencies & build

  • Maven: Upgrade to 3.9.12 (wrapper + POM); earlier steps to 3.9.9–3.9.11; Maven plugin API and plugin versions aligned.
  • JUnit: Migrate JUnit 3 → JUnit 4; JUnit Jupiter 5.6.1 → 5.14.2; Surefire updates.
  • JAXB: 2.3.3 → 4.0.4; Saxon-HE 9.8 → 12.9; Netty example 4.1.x → 4.2.9; SLF4J 1.7.x → 2.0.x; Commons IO, Hamcrest, Mockito, and many Maven plugin bumps (compiler, jar, javadoc, PMD, enforcer, gpg, invoker, etc.).
  • Other: Replace Proxool with HikariCP; remove Guava where possible; add plexus-xml; dependabot for GitHub Actions and Maven; JDK 8/11/17/21 build and CI adjustments.

Documentation & README

  • Update configuration options link; fix issue reference format (GitHub URL); add assertj-quickfixj to related projects; add skip javadoc to README; extend README with SNAPSHOT usage; configuration and SSL docs; issue/PR templates; SECURITY.md; customising-quickfixj and codegen docs.

Testing

  • JUnit 3 → 4 migration; AcceptanceTestSuite composition and runner for test count parity; CI script to compare test execution totals; JDBC store jcstress suite; dynamic ports for tests; free port for SocketAcceptor/SocketInitiator tests; additional acceptor mixed-session scenario; overloading header for message-specific subclasses.

CI / CD & infrastructure

  • Nightly SNAPSHOT to GitHub Packages; nightly build workflow (package step, exclude quickfixj-distribution, add quickfixj-stress-test); GitHub Actions (checkout 5→6, setup-java 4→5, CodeQL 2→4); macOS/Windows CI (Corretto, pagefile, JDK 8/17/21); devcontainer and .junie workflow; Maven wrappers; dependabot; remove Travis.

Contributors

Unique human contributors, sorted alphabetically. Bots are not listed.

Clone this wiki locally