I have a software product I am going to release soon. It is built with Java/Spring/Tomcat and will be installed on the customer's local network.
I plan to sell this to corporate customers and I want them to buy an annual renewing license to run it.
I am imagining something like the customer provides me with their company and contact name and they will receive a code in email. They enter the three piece of info ...
Company Name: Vance Refrigeration Inc. Contact Name: Bob Vance License Code: A2B2-A3B3-A4B4-A5B5
... and the application is licensed and works for them. Either by "phoning home" or by decrypting the code and activating itself locally.
The license will permit the application to run on X number of servers, for X number of users, with X number of features activated, and it will have an expiry date.
THOUGHTS AND QUESTIONS:
Should I encapsulate all of the license feature details (# servers, # users, expiry date) in that license code and decrypt it locally without having to "phone home" to a verification server?
Is there a way to link the three piece of info so all three have to be entered correctly for it to work? My thinking is, that way the name of the licensed owner is always accurately displayed.
If I require the software to hit a verification server, how often should I have it "phone home" ... and how would you handle deployments that are on internal networks with no outside internet access (I've worked in environments like this).
Is there a good product out there already does of this for me? Don't necessary want to re-invent the wheel.