This article covers license keys for the various Windward Products, errors, restrictions, corruption issues, and other tips.
Use this page's Table of Contents to find the section you need.
How do I retrieve my Windward license keys?
1. Head to https://store.windward.net.
2. Click Login(existing customer)
3. Enter your login info. If you've forgotten your information you can request it via this screen.
4. Copy your keys. NOTE: Keys are listed in two sections: version 9.X and higher and version 8.X and lower. See below for information on licenses and versions.
If you have not yet purchased keys or need to upgrade them, please email email@example.com.
I upgraded a Windward product but my keys no longer work:
If you have upgraded any of Windward's products (AutoTag, .NET/Java Engine, or the RESTful Engine), you may receive a license error as follows:
"This license is only valid up to version X.*.* * (IE, 10.*.**) "
If you see this error, the keys you presently have are only good up to the version at the time you downloaded them. To fix this, you simply login to the Windward online store and retrieve your current license keys.
We paid our yearly maintenance or negotiated for new products, but my keys no longer work:
When we make any changes to your current keys, such as changing the length or date of your Maintenance contract, adding new products, or changing products (like going from a 2 core to a 4 core engine), you will need to go to the store to download your updated keys. See the first entry in this section for directions.
Retrieve your current Windward license keys:
View the key you currently have installed:
To find what key you currently have installed, open MS Word, Excel, or Powerpoint. In the Ribbon, click the AutoTag Manager tab and click the License button. You may see a prompt asking if you want to allow the program to make changes to your device -- just click ok. A window will appear with your license key.
View or download your current keys
You must be current on your support and maintenance in order for your license keys to be eligible for the most current version.
- When your support and maintenance is paid or when Windward releases a new version and you are current on support and maintenance at that time, Windward will automatically upgrade all keys in its online store to the latest version. You will need to download these upgraded keys from our store.
- Login to the Windward online store located at https://store.windward.net
- If you do not know your username or password you can retrieve it by entering the email address of the account that is associated with your Windward license keys. An email will be sent with this information to the email address associated with the account in the online store.
NOTE: If you no longer have access to this email address you can send an email to firstname.lastname@example.org with your current license key and we will update our store records to the address you specify.
- Once logged in you can retrieve your key by copying from the browser and pasting into the appropriate place for the product you wish to update.
Other important license info
- You must have a separate license for each system that executes Windward code.
- You do not need a client license for machines whose browser will view generated reports, only for the machine the reports are created on (usually a central server).
- One license per machine is required.
- You must purchase support and upgrades for either all licenses or none.
- The "Standard Server" runs an unlimited number of reports daily. A single license for a server allows it to be run on one machine only. It is not a license to install the product on an unlimited number of machines.
- Where the WindwardReports.jar or WindwardReports.dll file is located is irrelevant— a license is needed for each machine executing code that uses WindwardReports. So if WindwardReports is located on a file server but never executed on the file server, the file server does not need a license. But each machine that executes code using the program on the file server does need a license.
- You do not need a separate license for a cold backup system as long as the cold backup system has the same IP address as the hot server.
- Your Engine version should always be equal to or newer than the version of Autotag you're using. If you're running different versions of AutoTag and the Engine, see Differing Versions of AutoTag and the Engine.
Different products require different license keys
If you have received a license key for AutoTag, keep in mind that key will only work with the AutoTag Product. The .NET/Java Engines and the RESTful Engine all require different license keys from the keys for AutoTag.
The only exception to this is purchasing a developer system which will contain a SINGLE key valid for BOTH AutoTag, and either the .NET or Java Engine, however, this is uncommon.
Licensing for the .NET Engine
The license key must be visible to the engine when it starts up. The .NET Engine will look in the following 2 locations (in order) until it finds a key:
- The app.exe.config (app stands for the name of your application) or web.config (asp.net) file.
Note: you cannot use WindwardReports.dll.config. And the config file must be in the correct directory - the same as where the app.exe file is for applications and in the IIS website root directory for web.config.
- HKLM\Software\\Windward Studios\\Reporting Engine!license (i.e., in the Reporting Engine key add a string value named license). This key will be visible to all instances of the engine running on the server it is placed in.
Licensing for the Java Engine
The key must be visible to the engine when it starts up. The Java Engine will look in the applications properties for the property with the value license. Normally this is in the WindwardReports.properties file. However, you can use any means to have that included in the applications properties.
Licensing for AutoTag
Enter the key via the AutoTag Manager tab in the MS Ribbon of Word/Excel/Powerpoint by clicking the License button. This first tries to store the key in the HKLM part of the registry so all users on the machine have the key available. If security restrictions do not allow that, it stores it in the HKCU part of the registry which loads it for that one user.
How do I update my License Keys in AutoTag?
To update your license key:
- Open MS Word, Excel or PowerPoint.
- Select the License icon in AutoTag's Options menu. The License Key Dialog displays.
- Copy and paste the new key into the pane, and then click OK.
License Key Errors
You may receive an error when installing your license key that will result in a message such as those below. See the previous section (Different products require different license keys) to set up your keys correctly.
AutoTag Error Message
.NET Engine Error Message
2 * Exception occurred: Your license is for a different Windward product 2
4 Error: 2
5 stack: at net.windward.xmlreport.ProcessReport._init()
6 at net.windward.xmlreport.ProcessReport.init()
7 at net.windward.api.csharp.Report.Init()
8 at RunReport.net.windward.samples.RunReport.Main(String args)
Java Engine Error Message
02 * Exception occurred: Your license is for a different Windward product 1
04 Error: Your license is for a different Windward product 1
05 net.windward.util.LicenseException: Your license is for a different Windward product 1
06 at net.windward.xmlreport.ProcessReport.addAll(Unknown Source)
07 at net.windward.xmlreport.ProcessReport.init(Unknown Source)
08 at net.windward.xmlreport.RunReport.main(Unknown Source)
09 Exception in thread "main" net.windward.util.LicenseException: Your license is for a different Windward product1
10 at net.windward.xmlreport.ProcessReport.addAll(Unknown Source)
11 at net.windward.xmlreport.ProcessReport.init(Unknown Source)
12 at net.windward.xmlreport.RunReport.main(Unknown Source)
Developer System Error Message
"License Error: Only allowed 1 request at a time using this server"
- Keys for Developer systems allow for 1 report to generate at a time.
Here are some tips on using Windward licenses:
- When changing a key in the Engine, you need to restart the app or service using Windward in order for the new key to take.
- In the Java Engine (the WindwardReports.properties file), you can have a multiline key but you need a / at the end of every line except the last line.
- In the .NET Engine (the APPNAME.exe.config file), make sure entire key is in double quotes. For example, “KEY”
Server Communication Protocols and Ports
The Windward Engine utilizes communication in both TCP and UDP requests utilizing ICANN registered port 1707.
This facilitates the requests made during the Report.Init() process where the license key file is read and broadcasts the following license key properties.
- License key number
- Total number of machines on which the key is valid to run.
- Total number of threads or cores per machine for which the license key is valid.
A running total is kept of the following values below, each updated when a broadcast is received on each running system.
- Current total number of machines on which the key is running
- Current number of threads or cores allocated for the reporting process on each machine where the key is running.
For additional details on how these requests operate refer to the License Copy Protection section below.
If the license key contains the code for a Test, Express, Developer license, the following is printed at the bottom:
"Report created by Windward Reports test version - www.windward.net"
"Report created by Windward Reports Express - www.windward.net"
"Report created by Windward Reports Developer System - www.windward.net";
or "Created by demo version of Windward Reports - www.windward.net"
Restricted by Computer Host Name or IP Address
Some licenses are restricted to running on specific computers by IP address and/or host name. If a license key has this restriction and is running on a computer that does not match the allowed systems, it will throw a license exception and list the dis-allowed IP address.
Restricted by Number of Calling Threads
Some licenses are restricted by the number of threads that can call Windward simultaneously. If this is set, Windward increments a counter each time a report is started (calling ProcessReport.setupProcess) and decremented each time it completes (calling ProcessReport.completeProcess() or ProcessReport.close()).
A license key also has the maximum number of cores setting. If the system running has the same or fewer cores than the core limit in the license, then the number of threads limit is ignored. This setting only takes effect on systems that have more cores than the core limit in the license.
Windward itself has no threads. The thread count is the threads that call Windward to create reports. This thread limit is counted across all VM/JVM/CLRs on a physical server. If you have 2 VMs, one with 3 JVMs (Java) and the other with 4 CLRs (.NET) and all are running software using Windward reports, all 7 environments count against the same total. If those 7 environments each have 4 threads generating reports, then that is 28 threads. But it is only 28 if all 28 threads are generating a report at the same time. If they all generate reports at different times (yes, unlikely – even with semaphores) then you only need a license that allows 1 thread. The count is the number of threads concurrently executing.
Because the count is not decremented until a report is completed, if a report throws an exception or you decide to not complete it, you must call ProcessReport.close() to decrement the count. Otherwise that thread remains counted. If you abort a JVM while reports are running, all other JVMs will retain the count for all reports running.
Licensing Copy Protection
This section contains detailed information about running the Windward products on multiple machines or servers. It is provided to help the system administrator and third-party developers understand how the Windward licensing works.
AutoTag and the reporting engines (both Java and .NET) have a copy protection mechanism that checks for license overuse. All three systems work the same but are independent of each other. In other words, AutoTag checks for AutoTag overuse but does not check reporting engine use. The Java Engine checks Java Engine overuse but does not check the .NET Engine, etc.
In each case, when the program “starts,” it asks all other systems running using the “same” license to identify themselves. Each system that is already running will respond to that request, identifying itself.
A license specifies the number of machines the license is valid for. If that number of machines responds to the system that just started, then the license is in full use and the system just starting will throw a LicenseException and will not generate a report. A LicenseException will not be thrown by any of the existing running engines.
AutoTag starts when Office (Word, Excel or PowerPoint) starts. It ends when all copies of Office on a user’s system exit.
The reporting engine starts when ProcessReport.init() is called or the first time a report is created. It ends when the jvm/clr it was called in exits. So if ProcessReport.init() is called and no report is generated for 2 weeks but the virtual machine is still running, that system is still using the license and will respond. If ProcessReport.Init() is not called and the first report is generated 2 weeks after the server starts, that is when the system will determine if there is an available license for that server.
One license is good for a single virtual machine running under a single set of credentials. If you have two virtual machines on a single physical machine, that requires 2 licenses. If on a single virtual machine you run 2 applications under 2 sets of credentials, that requires 2 licenses.
This system is purposely set up so licenses can move between machines (unlike Microsoft’s licensing, which locks each license to a specific machine). Keep in mind that if you want to stop using a license on a specific server, you must stop all virtual machines on the server that called the engine.
Each license has a unique ID. Two systems have the same license only if they have the same ID and the same settings such as product, number of reports, etc. If you purchased 3 server licenses, and then later 2 server licenses, you probably have 2 different licenses and each will have a different ID and will only check for other use of its license. In this case, if you would prefer a single license good for 5 systems (or any number of valid licenses), contact us and we can swap those licenses for a single license good for your 5 systems.
If a virtual machine throws the LicenseException, it will continue to do so on subsequent calls even if other engines have exited, making a license available. The virtual machine must be restarted for it to try again.
The LicenseException is a RuntimeException and therefore does not require that there be a try/catch for it. This decision was made because a LicenseException will only be thrown when the program starts, and if there is a problem, it will always be thrown. There are a large number of methods that can throw this exception, so it would have required an additional try/catch around almost all calls to Windward Reports. While your program does not require a try/catch for LicenseException, you may have one if you wish.
The program ListServers (in the Java Engine) will list all systems running the reporting engine by IP address. In AutoTag the About box will list the IP addresses of all systems running AutoTag by IP address. This finds all systems regardless of license ID and settings and the display does not display any of the license settings, just the IP address and server name. Each does limit itself to the same product, i.e. AutoTag only shows systems running AutoTag.