We are happy to announce v5.04.30 of our popular middleware for Delphi and C++Builder.

If you like kbmMW, please let others know! Share the word!

We strive hard to ensure kbmMW continues to set the bar for what an n-tier product must be capable of in the real world!

This release fixes reported bugs and adds a number of new features:

  • Support for DEFAULT column values in ORM.
  • Support for kbmMW_HTTP attribute for http services.
  • Lots of improvements.

Please look in the end of this post for a detailed change list.

Professional and Enterprise Edition is available for all with a current active SAU. If your SAU has run out, please visit our shop to extend it with another 12 months.

CodeGear Edition is available for free, but only supports a specific Delphi/Win32 SKU, contains a limited feature set and do not include source.

Please visit https://portal.components4developers.com to download.


kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices, websites, mainframes and more.

Please visit http://www.components4developers.com for more information about kbmMW.


Components4Developers is a company established in 1999 with the purpose of providing high quality development tools for developers and enterprises. The primary focus is on SOA, EAI and systems integration via our flagship product kbmMW.

kbmMW is a portable, highly scalable, high end application server and enterprise architecture integration (EAI) development framework for Win32, ..Net and Linux with clients residing on Win32, .Net, Linux, Unix, Mainframes, Minis, Embedded and many other places. It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance, telecom, governements, schools, laboratories, rentals, culture institutions, FDA approved medical devices, military and more.


5.04.30 Nov 19 2017

        Important notes (changes that may break existing code)
        * Renamed elements of TkbmMWSQLResolverNameCase to
          This is a breaking change that require you to open/save all
          forms/datamodules on which metadata components are placed to avoid
          property name error issues at runtime.

        New stuff
        - Added unittest project in Enterprise Edition, testing kbmMWORM,
          kbmMWDateTime, kbmMWNullable and kbmMWConfiguration. It require
        - Added Default column value support to ORM, kbmMW_Field attribute and
          A Default value is required if the field is declared not null and
          kbmMW shall upgrade the table storage automatically. Syntax example:
          [kbmMW_Field('name:fld4, unique:true, default:0',ftFloat)]
        - Added public List property to TkbmMWServers.
        - Added OnServiceDefinition to TkbmMWServer which is called whenever
          a service definition is created due to registration of a service using
        - Added protected ProcessCustomAttributes to
          TkbmMWCustomServiceDefinition. It allows custom service definitions to
          process attributes upon AutoRegisterServices.
        - Added Multiply operator overload to TkbmMWDateTime.
        - Added ExceptOnPersistError boolean to TkbmMWORM.
          If true, it will throw exceptions if any persist/insert/delete/modify
          fails. Else persist errors are silent.
        - Added overloaded Insert, Delete, Modify and Persist methods to
          TkbmMWORM that takes additional anonymous AFunction that will be
          called if persistence fails.
        - Changed ValuesByField procedure on TkbmMWCustomResolver to take
          additional const AWhat:TkbmMWResolverSetValues which controls which
          version of the record should have its value set.
        - Changed GetDefAsArray and GetDefAsObject of TkbmMWONObject to take
          additional argument: const AAutoCreate:boolean = true. If false nil is
          returned if no array or object is found for the property.
        - Added support for using simplified inline YAML syntax for RTTI
          settings attributes.
        - Added new kbmMW_HTTP attribute for TkbmMWCustomHTTPSmartService.
          [kbmMW_HTTP('accept:[f,...], root:[c:path,...], template:[c,...],
          where f can be unknown, get, put, head, post, delete, trace, connect,
          options, patch
          c can be html,css,script,media,other each followed by a path
          accept controls which types of operations should be accepted by the
          root controls which directory to look for the given resource type.
          template controls if a resource type should be considered a template
          and thus subject to macro replacement.
          mimeTypes add/overwrites to the existing known mimetypes.
          charSets add/overwrites to the existing charset types. Example:
          [kbmMW_HTTP('accept:[get], root:[media:"c:\someimages",
          TMyHTMLService = class(TkbmMWCustomHTTPSmartService)
        - Added properties EnabledFileCategories and EnabledFunctions to
          Controls which functions and file categories the service will handle.
        - Added SimplifiedInline:boolean (default false) property to
          It allows for syntax like this: [ a:b, c:d ] which is not accepted
          standard YAML syntax.
          Standard YAML would write [ a:{b}, c:{b} ]. Hence simplifiedinline
          should be used with care if at all, since it is not standard YAML
          syntax and can have sideeffects.
          But it is good for kbmMW's settings attributes syntax.
        - Added ADenyWrite:boolean property to TkbmMWFilePool.Access method to
          allow better control over share rights to file handles.
        - Added overloaded HTTPResponseFromFile methods to
          Allows for easily naming file for receiving browser and for deciding
          if to map file path or not.
        - Added SetResponseFileName to TkbmMWCustomHTTPService to define
          content-disposition, filename header field.
        - Added public property OnException to TkbmMWCustomClient. If an event
          handler is provided, any exceptions within the request operation of a
          TkbmMWCustomClient will be catched and forwarded to the eventhandler,
          else the exception will be thrown as usual.

        - Fixed TDateTime vs TkbmMWDateTime issues in TkbmMWServer.
        - Fixed kbmMW Database adapter wizard adding missing AOwner argument to
          API methods.
        - Fixed invalid properties in TkbmMWCustomHTTPService.dfm
        - Fixed warnings in kbmMWPassword, kbmMWHashSHA512, kbmMWHashFNV1A and
        - Fixed MetaExists declaration in DBISAM3 and DBISAM4 adapters.
        - Removed explicit operator overload from TkbmMWDateTime.
        - Fixed ORM UpdateGeneratorFields issue when it was overwriting
          preassigned value of a field with generator attribute, if any other
          fields needed auto generator assistance.
        - Fixed UpdateGeneratorFields to handle update statements where original
          field with generator attribute is null.
        - Fixed WaitRuns bug in TkbmMWScheduler.
        - Fixed too early clearing ChildEvents in TkbmMWScheduler.
        - Fixed a couple of YAML parsing bugs.
        - Fixed raising exception if TkbmMWCustomFileClient errors and no
          OnAccessException is defined.

       	Changes/minor additions
        - Changed so kbmMWGetFileSize do not require file to be exclusively
        - Renamed elements of TkbmMWSQLResolverNameCase to
          This is a breaking change that require you to open/save all
          forms/datamodules on which metadata components are placed to avoid
          property name error issues at runtime.


One thought on “ANN: kbmMW Professional and Enterprise Edition v. 5.04.30 released!”
  1. Please notice that emergency release 5.04.32 has been made available. It fixes two bugs. One related to compiling for NextGen and the other has to do with TkbmMWCustomSimpleClient exception handling, which unfortunately broke in 5.04.30. It is strongly recommended to immediately upgrade from 5.04.30 to 5.04.32.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.