Situation:
Large company with several internal Java applications that launched via Java Web Start from a Java Web Application. Users login into the Java Web Application and select a program that launches via Java WebStart. The application logs in a database when a user attempts to run an application. Once the application starts it marks the row in the database that it was successful.
Problem:
There are rows in the database where a user launched a program, but the application never updated the database that it started. There are a only a few causes that I can think of:
- The user did not have JVM installed or possibly the correct version
- The application failed to load due to a web-server/deployment issue. (For example not all .jars required by the application were deployed to the web server.
- The application had a connection issue with the database or a bug that caused it to not write to the database.
Goal/Question:
I would like to identify the quantities of the causes. Is there anyway to detect why a Java Web Start App failed to start, so that I can see how often this is the case? Is there another cause I might not be considering?
Your causes all seem plausible, but I think they’re going to be difficult to troubleshoot by adding more code, especially the first two causes. I think you’re going to need to do some more old-fashioned troubleshooting so that you can replicate the issues your users are experiencing.
Perhaps in the web-app have a “Trouble launching?” link that a user who experienced one of the first two issues could use to report the issue, because they should be able to readily detect that the app didn’t launch.
To eliminate the third cause, don’t have the apps themselves connect directly to the database, but instead only have them communicate back over HTTP to the web app that launched the JNLP – you can be reasonably assured that they have connectivity to that server. Then have that web-app insert the appropriate database records.