License management for optional XA transactional functions in a performance-sensitive environment
Original Publication Date: 2002-Jun-16
Included in the Prior Art Database: 2003-Jun-21
Disclosed is a mechanism for a license-management capability for an transactional product that has been designed so that it can participate in two-phase transactions under external commitment control as a chargable feature while maintaining a free capability as a one-phase single transactional resource, and also maintaining a single way of servicing the product. Most forms of license management have an unacceptable performance overhead when used frequently (for example each time a client program is started), so we need to reduce the number of checks made and this mechanism achieves that goal. The basic idea is that the XA switch static variable (which is the single defined interface into an XA Resource Manager) is delivered in its own DLL. Any application or Transaction Manager which wishes to call the product's XA interface must link with this DLL. However, as there is no real code inside the DLL the fields of the switch variable just point to functions within the main client DLL only one client DLL needs to be developed and delivered for both XA and non-XA environments. The existing free downloads can continue, with only a single, small piece of code needed for a chargable product. This invention splits out the key part of the standards-required programming interface so it can be shipped and installed separately, without disturbing existing one-phase client programs, and also minimising the cost to service and build teams which only need to work with one client package. There is no need to duplicate function between XA and non-XA client DLLs; there is minimal performance overhead; customer machines can be upgraded non-disruptively to add this function; any slow license checking can be done as part of the installation procedures, which is not performance-sensitive, before the new DLL is available for applications to link to. If the new DLL is not installed on a machine, then the XA function will simply not work. The customer must have installed it first. However non-XA functions work as today.