ANN: kbmMW Professional and Enterprise Edition v. 5.04.30 released!

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 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 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

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s