Skip to main content
Skip table of contents

Concurrent Operation


A Concurrent Operation License allows DeltaXML software to be used concurrently (simultaneously). Operations such as comparison or merge are restricted so that a maximum number of operations that can run at any time is limited by the license.

A Concurrent Operation license requires a license server to manage a pool of floating or concurrent licenses. Certain operations such as comparison and merge will be invoked by user code calling methods in our Java APIs. These operations will checkout a license when processing starts. When processing has finished the license will be returned (checked in) to the license server.

The license server must be compatible with our supported platforms which include 64 bit versions of Linux and Windows Server operating systems on 64 bit Intel/AMD architectures.

If a single physical or virtual machine (including docker instances), is running multiple operations such as comparisons at the same time these are all counted as concurrent operations by the license server. Similarly multiple operations by a single user are also counted separately.

Please note that this behaviour differs from our previous concurrent-user and concurrent-server license types

Use Cases

With this type of license, a system running the license server software must be located at a fixed hostname or IP address (this could be a fixed internal or ElasticIP in AWS, for example). Other systems which perform the licensed operations are configured with the fixed license server hostname or address so that they can contact it to checkout/checkin their licenses, but their individual hostnames or IP addresses do not have to be specified as part of the license. There are two ways in which the client system(s) can be configured to contact the license server - please see: How to setup clients to use a concurrent (network) license server.

While one system with a single fixed address (to run the license server software) is required, this model allows scalable systems that perhaps start and stop systems or 'instances' depending on load, perhaps using a load-balancer. The instance 'image' will need to be configured with the server address, but any number of child instances can be used and be running as it is only the operations invoked through the API that are being counted. Adjusting the license count allows the concurrent capability to be adjusted easily by replacing the license file on the server; the deployed image for the instances would not require any modification for such adjustments.

License server configurations providing redundancy and geographic resilience are possible and avoid the license server being a single point of failure.

Client software design for concurrent licensing

When the number of concurrent/floating operations permitted by the pool is exceeded the licensed operations will report a LicenseConcurrencyLimitException. Users could ensure that they provide enough concurrent licenses for peak demand. Alternatively, appplication code invoking the controlled Java API methods should make provision for handling a LicenseConcurrencyLimitException and take appropriate action when it is thrown, for example re-trying a comparison or merge operation after an appropriate time delay and/or informing the user via a warning or progress indicator.

All of the products which support concurrent operation licensing should have a LicenseConcurrencyLimitException in their Java APIs. It may be the case that various operations such as compare are declared to throw a LicenseException which is the super-class of the concurrency limit exception. When using concurrent operation licensing please make specific provision for this exception sub-class; here is the JavaDoc for the XML-Compare product, other products have similar exceptions and documentation:

Further Information

The following guides are appropriate to server licensing:

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.