2010-11-23 2 views
0

Situation starten fehlschlägt:Wie zu erkennen, wenn/warum ein Java Web Start für die Benutzer

Große Unternehmen mit mehreren internen Java-Anwendungen, die über Java Web Start von einer Java-Web-Anwendung gestartet. Benutzer melden sich bei der Java Web Application an und wählen ein Programm aus, das über Java WebStart gestartet wird. Die Anwendung meldet eine Datenbank an, wenn ein Benutzer versucht, eine Anwendung auszuführen. Sobald die Anwendung gestartet wird, markiert sie die Zeile in der Datenbank, die erfolgreich war.

Problem:

Es gibt Zeilen in der Datenbank, in der ein Benutzer ein Programm ins Leben gerufen, aber die Anwendung nie die Datenbank aktualisiert, die es gestartet. Es gibt nur wenige Gründe, die ich denken kann:

  • Der Benutzer nicht über JVM installiert oder möglicherweise die richtige Version
  • Die Anwendung aufgrund einer Web-Server/deployment Problem konnte nicht geladen werden. (Zum Beispiel nicht alle .jars von der Anwendung benötigt wurden an den Web-Server bereitgestellt.
  • Die Anwendung mit der Datenbank eine Verbindung Problem hatte oder einen Bug, der es verursacht nicht in die Datenbank zu schreiben.

Ziel/Frage:

Ich möchte die Mengen der Ursachen identifizieren.Gibt es irgendwie zu erkennen, warum eine Java Web Start App nicht gestartet werden konnte, so dass ich sehen kann, wie oft das der Fall ist? weil ich vielleicht nicht in Betracht ziehe?

Antwort

2

Ihr cau Alle scheinen plausibel zu sein, aber ich denke, sie werden schwierig zu beheben sein, indem mehr Code hinzugefügt wird, besonders die ersten beiden. Ich denke, dass Sie eine altmodische Fehlerbehebung durchführen müssen, damit Sie die Probleme Ihrer Benutzer replizieren können.

Vielleicht in der Web-App ein "Trouble launch"? Verknüpfung, dass ein Benutzer, der eines der ersten beiden Probleme erlebt hat, das Problem melden könnte, da er leicht erkennen kann, dass die App nicht gestartet wurde. Um die dritte Ursache zu beseitigen, müssen die Apps nicht direkt eine Verbindung mit der Datenbank herstellen, sondern sie nur über HTTP an die Webanwendung zurückmelden, die den JNLP gestartet hat - Sie können sicher sein, dass sie Konnektivität haben zu diesem Server. Dann fügen Sie mit dieser Web-App die entsprechenden Datenbankeinträge ein.

1

Ich möchte Ihnen Lösung für jeden Fall separat vorschlagen.

* The user did not have JVM installed or possibly the correct version 

In der Regel Benutzer startet Web Start-Anwendung, indem Sie auf Link zu JNLP-Datei im Browser klicken. Überprüfe, ob das Java-Plugin installiert ist. Sie können es mit Java-Skript tun. Auf diese Weise vermeiden Sie Benutzer, die kein Java-Plugin zum Starten der Anwendung haben. Ich weiß, dass es keine ideale Lösung ist: - wahrscheinlich Plugin ist nicht installiert, aber Desktop Java kann ausgeführt werden. Dies ist "falsch negativ" - Benutzer kann die Anwendung zum ersten Mal erfolgreich ausführen, aber dann deinstallieren Sie die JVM und versuchen, die Anwendung erneut auszuführen.

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

Alle anderen Probleme könnten mit einer Art Loader gelöst werden.

  1. Anwendung mit Bat-Datei/Shell-Skript ausführen, das testet, dass Java hier ist, bevor die Anwendung selbst ausgeführt wird. Ich weiß, dass der Web-Start die Anwendung selbst ausführt, aber Sie können ein spezielles Symbol auf dem Desktop erstellen, das Ihre Anwendung über das Skript ausführt.
  2. wrap Sie "große" Anwendung (en) mit Lightweight Loader, die Gültigkeit der Classpath und (wahrscheinlich) DB-Konnektivität überprüft und dann führt die Anwendung. Der Lader kann Fehlerbenachrichtigungen an Benutzer und an Administrator
  3. einige verrückte Lösung senden. Lass uns zurück zum Skript gehen. Das Skript kann die Serverseite darüber informieren, dass die Anwendung gestartet wird. Der Server startet den Timer-Task, der den Anwendungsstatus im DB eincheckt. Wenn die Anwendung nicht mit dem Server verbunden ist, kann der Server den Benutzer benachrichtigen, indem er eine Nachricht mit "net send" sendet (wenn sich der Benutzer in Windows befindet) oder eine Mail sendet, wenn sich der Benutzer auf einer anderen Plattform befindet.
Verwandte Themen