2010-11-23 27 views
0

Situation:Comment détecter quand/pourquoi Java Web Start ne parvient pas à lancer pour vos utilisateurs

grande entreprise avec plusieurs applications Java internes lancées à partir de Java Web Start à partir d'une application Web Java. Les utilisateurs se connectent à l'application Web Java et sélectionnent un programme qui démarre via Java WebStart. L'application se connecte dans une base de données lorsqu'un utilisateur tente d'exécuter une application. Une fois que l'application démarre, elle marque la ligne dans la base de données qu'elle a réussi.

Problème:

Il y a des lignes dans la base de données où un utilisateur a lancé un programme, mais l'application n'a jamais mis à jour la base de données qu'il a commencé. Il y a quelques raisons que je peux penser:

  • L'utilisateur ne disposait pas machine virtuelle Java installée ou peut-être la version correcte
  • L'application n'a pas réussi à charger en raison d'un serveur web/problème de déploiement. (Par exemple tous les .jars requis par l'application ont été déployées sur le serveur Web.
  • L'application avait un problème de connexion avec la base de données ou d'un bug qui a causé de ne pas écrire à la base de données.

Objectif/Question:

Je voudrais identifier les quantités de causes, y a-t-il un moyen de détecter le démarrage d'une application Java Web Start, de sorte que je puisse voir à quelle fréquence cela se produit? parce que je ne pourrais pas être considéré?

Répondre

2

Votre cau Tout semble plausible, mais je pense qu'ils vont être difficiles à résoudre en ajoutant plus de code, en particulier les deux premières causes. Je pense que vous aurez besoin de faire un peu plus de dépannage à l'ancienne afin que vous puissiez reproduire les problèmes rencontrés par vos utilisateurs.

Peut-être que l'application web a un problème de "lancement?" lien qu'un utilisateur qui a rencontré l'un des deux premiers problèmes pourrait utiliser pour signaler le problème, car ils devraient être en mesure de détecter facilement que l'application n'a pas été lancée. Pour éliminer la troisième cause, les applications ne se connectent pas directement à la base de données, mais ne les communiquent qu'à travers HTTP à l'application Web qui a lancé le JNLP - vous pouvez être raisonnablement assuré qu'elles ont la connectivité à ce serveur. Ensuite, demandez à cette application Web d'insérer les enregistrements de base de données appropriés.

1

Je voudrais vous suggérer une solution pour chaque cas séparément. L'utilisateur démarre généralement l'application de démarrage Web en cliquant sur le lien vers le fichier JNLP dans le navigateur. En général, l'utilisateur démarre l'application de démarrage Web. Essayez de vérifier que le plugin Java est installé. Vous pouvez le faire en utilisant le script java. De cette façon, vous éviterez les utilisateurs qui n'ont pas de plugin java pour démarrer l'application. Je sais que ce n'est pas la solution idéale: - probablement le plugin n'est pas installé mais le bureau Java peut fonctionner. ceci est "faux négatif" - l'utilisateur peut exécuter l'application pour la première fois, puis désinstaller la JVM et réessayer d'exécuter l'application.

* 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. 

Tous les autres problèmes peuvent être résolus en utilisant un chargeur.

  1. Exécutez l'application en utilisant le fichier bat/script shell qui vérifie que java est présent avant d'exécuter l'application elle-même. Je sais que le démarrage Web exécute l'application elle-même, mais vous pouvez créer une icône spéciale sur le bureau qui exécute votre application via le script.
  2. Enveloppez-vous "grande" application (s) en utilisant un chargeur léger qui vérifie la validité de classpath et (probablement) la connectivité DB, puis exécute l'application. Le chargeur peut envoyer des notifications d'échec à l'utilisateur et à l'administrateur
  3. une solution folle. Revenons au script. Le script peut informer le serveur que l'application va démarrer. Le serveur démarre la tâche de temporisation qui vérifie dans DB le statut de l'application. Si l'application n'est pas connectée au serveur, le serveur peut informer l'utilisateur en envoyant un message en utilisant "net send" (si l'utilisateur est sur Windows) ou par courrier si l'utilisateur est sur une autre plate-forme.